3 namespace Drupal\Tests\Core\EventSubscriber;
5 use Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber;
6 use Drupal\Core\Routing\RouteBuildEvent;
7 use Drupal\Tests\UnitTestCase;
8 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
9 use Symfony\Component\Routing\Route;
12 * @coversDefaultClass \Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
13 * @group EventSubscriber
15 class SpecialAttributesRouteSubscriberTest extends UnitTestCase {
18 * Provides a list of routes with invalid route variables.
21 * An array of invalid routes.
23 public function providerTestOnRouteBuildingInvalidVariables() {
24 // Build an array of mock route objects based on paths.
27 '/test/{system_path}',
29 '/test/{' . RouteObjectInterface::ROUTE_OBJECT . '}',
30 '/test/{' . RouteObjectInterface::ROUTE_NAME . '}',
33 '/test/{_raw_variables}',
36 foreach ($paths as $path) {
37 $routes[] = [new Route($path)];
44 * Provides a list of routes with valid route variables.
47 * An array of valid routes.
49 public function providerTestOnRouteBuildingValidVariables() {
50 // Build an array of mock route objects based on paths.
56 '/test/{entity_test}',
59 foreach ($paths as $path) {
60 $routes[] = [new Route($path)];
67 * Tests the onAlterRoutes method for valid variables.
69 * @param \Symfony\Component\Routing\Route $route
72 * @dataProvider providerTestOnRouteBuildingValidVariables
74 * @covers ::onAlterRoutes
76 public function testOnRouteBuildingValidVariables(Route $route) {
77 $route_collection = $this->getMock('Symfony\Component\Routing\RouteCollection', NULL);
78 $route_collection->add('test', $route);
80 $event = new RouteBuildEvent($route_collection, 'test');
81 $subscriber = new SpecialAttributesRouteSubscriber();
82 $this->assertNull($subscriber->onAlterRoutes($event));
86 * Tests the onAlterRoutes method for invalid variables.
88 * @param \Symfony\Component\Routing\Route $route
91 * @dataProvider providerTestOnRouteBuildingInvalidVariables
92 * @covers ::onAlterRoutes
94 public function testOnRouteBuildingInvalidVariables(Route $route) {
95 $route_collection = $this->getMock('Symfony\Component\Routing\RouteCollection', NULL);
96 $route_collection->add('test', $route);
98 $event = new RouteBuildEvent($route_collection, 'test');
99 $subscriber = new SpecialAttributesRouteSubscriber();
100 $this->setExpectedException(\PHPUnit_Framework_Error_Warning::class, 'uses reserved variable names');
101 $subscriber->onAlterRoutes($event);