diff --git a/core/modules/system/tests/src/Unit/EventSubscriber/AdminRouteSubscriberTest.php b/core/modules/system/tests/src/Unit/EventSubscriber/AdminRouteSubscriberTest.php new file mode 100644 index 0000000000..b938dd4684 --- /dev/null +++ b/core/modules/system/tests/src/Unit/EventSubscriber/AdminRouteSubscriberTest.php @@ -0,0 +1,93 @@ +onAlterRoutes(new RouteBuildEvent($collection)); + + $this->assertEquals($expected_collection, $collection); + } + + public function providerTestAlterRoutes() { + $non_admin_route = new Route('/front-page'); + $non_admin_route_html = new Route('/front-page', [], ['_format' => 'html']); + $non_admin_route_non_html = new Route('/front-page', [], ['_format' => 'json']); + + $admin_route = new Route('/admin/test'); + $admin_route_html = new Route('/admin/test', [], ['_format' => 'html']); + $admin_route_non_html = new Route('/admin/test', [], ['_format' => 'json']); + + $expected_collection = new RouteCollection(); + $expected_collection->add('route.name', clone $non_admin_route); + $collection = new RouteCollection(); + $collection->add('route.name', clone $non_admin_route); + $data['non admin route'] = [ + $expected_collection, + $collection, + ]; + + $expected_collection = new RouteCollection(); + $expected_collection->add('route.name', clone $non_admin_route_html); + $collection = new RouteCollection(); + $collection->add('route.name', clone $non_admin_route_html); + $data['non admin route with explicit html'] = [ + $expected_collection, + $collection, + ]; + + $expected_collection = new RouteCollection(); + $expected_collection->add('route.name', clone $non_admin_route_non_html); + $collection = new RouteCollection(); + $collection->add('route.name', clone $non_admin_route_non_html); + $data['non admin route with explicit json'] = [ + $expected_collection, + $collection, + ]; + + $expected_collection = new RouteCollection(); + $expected_collection->add('route.name', (clone $admin_route)->setOption('_admin_route', TRUE)); + $collection = new RouteCollection(); + $collection->add('route.name', clone $admin_route); + $data['admin route'] = [ + $expected_collection, + $collection, + ]; + + $expected_collection = new RouteCollection(); + $expected_collection->add('route.name', (clone $admin_route_html)->setOption('_admin_route', TRUE)); + $collection = new RouteCollection(); + $collection->add('route.name', clone $admin_route_html); + $data['admin route with explicit html'] = [ + $expected_collection, + $collection, + ]; + + $expected_collection = new RouteCollection(); + $expected_collection->add('route.name', clone $admin_route_non_html); + $collection = new RouteCollection(); + $collection->add('route.name', clone $admin_route_non_html); + $data['admin route with explicit json'] = [ + $expected_collection, + $collection, + ]; + + return $data; + } + +}