More updates to stop using dev or alpha or beta versions.
[yaffs-website] / web / core / tests / Drupal / Tests / Core / EventSubscriber / ModuleRouteSubscriberTest.php
1 <?php
2
3 namespace Drupal\Tests\Core\EventSubscriber;
4
5 use Drupal\Core\Routing\RouteBuildEvent;
6 use Drupal\Tests\UnitTestCase;
7 use Drupal\Core\EventSubscriber\ModuleRouteSubscriber;
8 use Symfony\Component\Routing\RouteCollection;
9 use Symfony\Component\Routing\Route;
10
11 /**
12  * @coversDefaultClass \Drupal\Core\EventSubscriber\ModuleRouteSubscriber
13  * @group EventSubscriber
14  */
15 class ModuleRouteSubscriberTest extends UnitTestCase {
16
17   /**
18    * The mock module handler.
19    *
20    * @var Drupal\Core\Extension\ModuleHandlerInterface|\PHPUnit_Framework_MockObject_MockObject
21    */
22   protected $moduleHandler;
23
24   protected function setUp() {
25     $this->moduleHandler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface');
26
27     $value_map = [
28       ['enabled', TRUE],
29       ['disabled', FALSE],
30     ];
31
32     $this->moduleHandler->expects($this->any())
33       ->method('moduleExists')
34       ->will($this->returnValueMap($value_map));
35   }
36
37   /**
38    * Tests that removeRoute() removes routes when the module is not enabled.
39    *
40    * @dataProvider providerTestRemoveRoute
41    * @covers ::onAlterRoutes
42    *
43    * @param string $route_name
44    *   The machine name for the route.
45    * @param array $requirements
46    *   An array of requirements to use for the route.
47    * @param bool $removed
48    *   Whether or not the route is expected to be removed from the collection.
49    */
50   public function testRemoveRoute($route_name, array $requirements, $removed) {
51     $collection = new RouteCollection();
52     $route = new Route('', [], $requirements);
53     $collection->add($route_name, $route);
54
55     $event = new RouteBuildEvent($collection, 'test');
56     $route_subscriber = new ModuleRouteSubscriber($this->moduleHandler);
57     $route_subscriber->onAlterRoutes($event);
58
59     if ($removed) {
60       $this->assertNull($collection->get($route_name));
61     }
62     else {
63       $this->assertInstanceOf('Symfony\Component\Routing\Route', $collection->get($route_name));
64     }
65   }
66
67   /**
68    * Data provider for testRemoveRoute().
69    */
70   public function providerTestRemoveRoute() {
71     return [
72       ['enabled', ['_module_dependencies' => 'enabled'], FALSE],
73       ['disabled', ['_module_dependencies' => 'disabled'], TRUE],
74       ['enabled_or', ['_module_dependencies' => 'disabled,enabled'], FALSE],
75       ['enabled_or', ['_module_dependencies' => 'enabled,disabled'], FALSE],
76       ['disabled_or', ['_module_dependencies' => 'disabled,disabled'], TRUE],
77       ['enabled_and', ['_module_dependencies' => 'enabled+enabled'], FALSE],
78       ['enabled_and', ['_module_dependencies' => 'enabled+disabled'], TRUE],
79       ['enabled_and', ['_module_dependencies' => 'disabled+enabled'], TRUE],
80       ['disabled_and', ['_module_dependencies' => 'disabled+disabled'], TRUE],
81       ['no_dependencies', [], FALSE],
82     ];
83   }
84
85 }