public function RouteBuilderTest::testRebuildWithProviderBasedRoutes in Drupal 8
Tests the rebuild with routes provided by a callback.
See also
\Drupal\Core\Routing\RouteBuilder::rebuild()
File
- core/
tests/ Drupal/ Tests/ Core/ Routing/ RouteBuilderTest.php, line 191 - Contains \Drupal\Tests\Core\Routing\RouteBuilderTest.
Class
- RouteBuilderTest
- @coversDefaultClass \Drupal\Core\Routing\RouteBuilder @group Routing
Namespace
Drupal\Tests\Core\RoutingCode
public function testRebuildWithProviderBasedRoutes() {
$this->lock
->expects($this
->once())
->method('acquire')
->with('router_rebuild')
->will($this
->returnValue(TRUE));
$this->yamlDiscovery
->expects($this
->once())
->method('findAll')
->will($this
->returnValue([
'test_module' => [
'route_callbacks' => [
'\\Drupal\\Tests\\Core\\Routing\\TestRouteSubscriber::routesFromArray',
'test_module.route_service:routesFromCollection',
],
],
]));
$container = new ContainerBuilder();
$container
->set('test_module.route_service', new TestRouteSubscriber());
$this->controllerResolver
->expects($this
->any())
->method('getControllerFromDefinition')
->will($this
->returnCallback(function ($controller) use ($container) {
$count = substr_count($controller, ':');
if ($count == 1) {
list($service, $method) = explode(':', $controller, 2);
$object = $container
->get($service);
}
else {
list($class, $method) = explode('::', $controller, 2);
$object = new $class();
}
return [
$object,
$method,
];
}));
$route_collection_filled = new RouteCollection();
$route_collection_filled
->add('test_route.1', new Route('/test-route/1'));
$route_collection_filled
->add('test_route.2', new Route('/test-route/2'));
$route_build_event = new RouteBuildEvent($route_collection_filled);
// Ensure that the alter routes events are fired.
$this->dispatcher
->expects($this
->at(0))
->method('dispatch')
->with(RoutingEvents::DYNAMIC, $route_build_event);
$this->dispatcher
->expects($this
->at(1))
->method('dispatch')
->with(RoutingEvents::ALTER, $route_build_event);
// Ensure that access checks are set.
$this->checkProvider
->expects($this
->once())
->method('setChecks')
->with($route_collection_filled);
// Ensure that the routes are set to the dumper and dumped.
$this->dumper
->expects($this
->at(0))
->method('addRoutes')
->with($route_collection_filled);
$this->dumper
->expects($this
->at(1))
->method('dump');
$this
->assertTrue($this->routeBuilder
->rebuild());
}