diff --git a/core/lib/Drupal/Core/EventSubscriber/ModuleRouteSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ModuleRouteSubscriber.php index 94c790c..70b6f43 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ModuleRouteSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ModuleRouteSubscriber.php @@ -87,7 +87,9 @@ public function removeRoutes(RouteBuildEvent $event) { * Explodes a string based on a separator. * * @param string $string + * The string to explode. * @param string $separator + * The string separator to explode with. * * @return array * An array of exploded (and trimmed) values. diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php index 5fcbfd2..8aa1366 100644 --- a/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php +++ b/core/tests/Drupal/Tests/Core/EventSubscriber/ModuleRouteSubscriberTest.php @@ -16,6 +16,8 @@ /** * Tests the ModuleRouteSubscriber class. * + * @group Drupal + * * @see \Drupal\Core\EventSubscriber\ModuleRouteSubscriber */ class ModuleRouteSubscriberTest extends UnitTestCase { @@ -35,50 +37,61 @@ public static function getInfo() { ); } - /** - * Tests that removeRoute() removes routes when the module is not enabled. - */ - public function testRemoveRoute() { - $module_handler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'); + public function setUp() { + $this->moduleHandler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'); $value_map = array( array('enabled', TRUE), array('disabled', FALSE), ); - $module_handler->expects($this->any()) + $this->moduleHandler->expects($this->any()) ->method('moduleExists') ->will($this->returnValueMap($value_map)); + } + /** + * Tests that removeRoute() removes routes when the module is not enabled. + * + * @dataProvider testRemoveRouteProvider + * + * @param string $route_name + * The machine name for the route. + * @param array $requirements + * An array of requirements to use for the route. + * @param bool $removed + * Whether or not the route is expected to be removed from the collection. + */ + public function testRemoveRoute($route_name, array $requirements, $removed) { $collection = new RouteCollection(); - $route_1 = new Route('', array(), array('_module_dependencies' => 'enabled')); - $collection->add('enabled', $route_1); - $route_2 = new Route('', array(), array('_module_dependencies' => 'disabled')); - $collection->add('disabled', $route_2); - $route_3 = new Route('', array(), array('_module_dependencies' => 'disabled,enabled')); - $collection->add('enabled_or', $route_3); - $route_4 = new Route('', array(), array('_module_dependencies' => 'disabled,disabled')); - $collection->add('disabled_or', $route_4); - $route_5 = new Route('', array(), array('_module_dependencies' => 'disabled+disabled')); - $collection->add('disabled_and', $route_5); - $route_6 = new Route('', array(), array('_module_dependencies' => 'enabled+enabled')); - $collection->add('enabled_and', $route_6); - $route_7 = new Route(''); - $collection->add('no_module_dependencies', $route_7); + $route = new Route('', array(), $requirements); + $collection->add($route_name, $route); $event = new RouteBuildEvent($collection, 'test'); - $route_subscriber = new ModuleRouteSubscriber($module_handler); + $route_subscriber = new ModuleRouteSubscriber($this->moduleHandler); $route_subscriber->removeRoutes($event); - $this->assertInstanceOf('Symfony\Component\Routing\Route', $collection->get('enabled')); - $this->assertInstanceOf('Symfony\Component\Routing\Route', $collection->get('enabled_or')); - $this->assertInstanceOf('Symfony\Component\Routing\Route', $collection->get('enabled_and')); - - $this->assertNull($collection->get('disabled')); - $this->assertNull($collection->get('disabled_or')); - $this->assertNull($collection->get('disabled_and')); + if ($removed) { + $this->assertNull($collection->get($route_name)); + } + else { + $this->assertInstanceOf('Symfony\Component\Routing\Route', $collection->get($route_name)); + } + } - $this->assertInstanceOf('Symfony\Component\Routing\Route', $collection->get('no_module_dependencies')); + /** + * Data provider for testRemoveRoute(). + */ + public function testRemoveRouteProvider() { + return array( + array('enabled', array('_module_dependencies' => 'enabled'), FALSE), + array('disabled', array('_module_dependencies' => 'disabled'), TRUE), + array('enabled_or', array('_module_dependencies' => 'disabled,enabled'), FALSE), + array('disabled_or', array('_module_dependencies' => 'disabled,disabled'), TRUE), + array('enabled_and', array('_module_dependencies' => 'enabled+enabled'), FALSE), + array('disabled_and', array('_module_dependencies' => 'disabled+disabled'), TRUE), + array('no_dependencies', array(), FALSE), + ); } }