Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / system / tests / src / Unit / Routing / AdminRouteSubscriberTest.php
1 <?php
2
3 namespace Drupal\Tests\system\Unit\Routing;
4
5 use Drupal\Core\Routing\RouteBuildEvent;
6 use Drupal\system\EventSubscriber\AdminRouteSubscriber;
7 use Drupal\Tests\UnitTestCase;
8 use Symfony\Component\Routing\Route;
9 use Symfony\Component\Routing\RouteCollection;
10
11 /**
12  * @coversDefaultClass \Drupal\system\EventSubscriber\AdminRouteSubscriber
13  * @group system
14  */
15 class AdminRouteSubscriberTest extends UnitTestCase {
16
17   /**
18    * @covers ::alterRoutes
19    * @covers ::isHtmlRoute
20    *
21    * @dataProvider providerTestAlterRoutes
22    */
23   public function testAlterRoutes(Route $route, $is_admin) {
24     $collection = new RouteCollection();
25     $collection->add('the_route', $route);
26     (new AdminRouteSubscriber())->onAlterRoutes(new RouteBuildEvent($collection));
27
28     $this->assertSame($is_admin, $route->getOption('_admin_route'));
29   }
30
31   public function providerTestAlterRoutes() {
32     $data = [];
33     $data['non-admin'] = [
34       new Route('/foo'),
35       NULL,
36     ];
37     $data['admin prefix'] = [
38       new Route('/admin/foo'),
39       TRUE,
40     ];
41     $data['admin option'] = [
42       (new Route('/foo'))
43         ->setOption('_admin_route', TRUE),
44       TRUE,
45     ];
46     $data['admin prefix, non-HTML format'] = [
47       (new Route('/admin/foo'))
48         ->setRequirement('_format', 'json'),
49       NULL,
50     ];
51     $data['admin option, non-HTML format'] = [
52       (new Route('/foo'))
53         ->setRequirement('_format', 'json')
54         ->setOption('_admin_route', TRUE),
55       TRUE,
56     ];
57     $data['admin prefix, HTML format'] = [
58       (new Route('/admin/foo'))
59         ->setRequirement('_format', 'html'),
60       TRUE,
61     ];
62     $data['admin prefix, multi-format including HTML'] = [
63       (new Route('/admin/foo'))
64         ->setRequirement('_format', 'json|html'),
65       TRUE,
66     ];
67     return $data;
68   }
69
70 }