function it_generates_routing_with_custom_variables(RegistryInterface $resourceRegistry, MetadataInterface $metadata, RouteFactoryInterface $routeFactory, RouteCollection $routeCollection, Route $showRoute, Route $indexRoute, Route $createRoute, Route $updateRoute, Route $deleteRoute)
{
$resourceRegistry->get('sylius.product')->willReturn($metadata);
$metadata->getApplicationName()->willReturn('sylius');
$metadata->getName()->willReturn('product');
$metadata->getPluralName()->willReturn('products');
$metadata->getServiceId('controller')->willReturn('sylius.controller.product');
$routeFactory->createRouteCollection()->willReturn($routeCollection);
$configuration = <<<EOT
alias: sylius.product
vars:
all:
foo: bar
create:
bar: foo
update:
abc: xyz
EOT;
$showDefaults = ['_controller' => 'sylius.controller.product:showAction', '_sylius' => ['permission' => false, 'vars' => ['foo' => 'bar']]];
$routeFactory->createRoute('/products/{id}', $showDefaults, [], [], '', [], ['GET'])->willReturn($showRoute);
$routeCollection->add('sylius_product_show', $showRoute)->shouldBeCalled();
$indexDefaults = ['_controller' => 'sylius.controller.product:indexAction', '_sylius' => ['permission' => false, 'vars' => ['foo' => 'bar']]];
$routeFactory->createRoute('/products/', $indexDefaults, [], [], '', [], ['GET'])->willReturn($indexRoute);
$routeCollection->add('sylius_product_index', $indexRoute)->shouldBeCalled();
$createDefaults = ['_controller' => 'sylius.controller.product:createAction', '_sylius' => ['permission' => false, 'vars' => ['foo' => 'bar', 'bar' => 'foo']]];
$routeFactory->createRoute('/products/new', $createDefaults, [], [], '', [], ['GET', 'POST'])->willReturn($createRoute);
$routeCollection->add('sylius_product_create', $createRoute)->shouldBeCalled();
$updateDefaults = ['_controller' => 'sylius.controller.product:updateAction', '_sylius' => ['permission' => false, 'vars' => ['foo' => 'bar', 'abc' => 'xyz']]];
$routeFactory->createRoute('/products/{id}/edit', $updateDefaults, [], [], '', [], ['GET', 'PUT', 'PATCH'])->willReturn($updateRoute);
$routeCollection->add('sylius_product_update', $updateRoute)->shouldBeCalled();
$deleteDefaults = ['_controller' => 'sylius.controller.product:deleteAction', '_sylius' => ['permission' => false, 'vars' => ['foo' => 'bar']]];
$routeFactory->createRoute('/products/{id}', $deleteDefaults, [], [], '', [], ['DELETE'])->willReturn($deleteRoute);
$routeCollection->add('sylius_product_delete', $deleteRoute)->shouldBeCalled();
$this->load($configuration, 'sylius.resource')->shouldReturn($routeCollection);
}