Version 1
[yaffs-website] / web / core / tests / Drupal / Tests / Core / RouteProcessor / RouteProcessorManagerTest.php
1 <?php
2
3 namespace Drupal\Tests\Core\RouteProcessor;
4
5 use Drupal\Core\Cache\Cache;
6 use Drupal\Core\Render\BubbleableMetadata;
7 use Drupal\Core\RouteProcessor\RouteProcessorManager;
8 use Drupal\Tests\UnitTestCase;
9 use Symfony\Component\Routing\Route;
10
11 /**
12  * @coversDefaultClass \Drupal\Core\RouteProcessor\RouteProcessorManager
13  * @group RouteProcessor
14  */
15 class RouteProcessorManagerTest extends UnitTestCase {
16
17   /**
18    * The route processor manager.
19    *
20    * @var \Drupal\Core\RouteProcessor\RouteProcessorManager
21    */
22   protected $processorManager;
23
24   protected function setUp() {
25     $this->processorManager = new RouteProcessorManager();
26   }
27
28   /**
29    * Tests the Route process manager functionality.
30    */
31   public function testRouteProcessorManager() {
32     $route = new Route('');
33     $parameters = ['test' => 'test'];
34     $route_name = 'test_name';
35
36     $processors = [
37       10 => $this->getMockProcessor($route_name, $route, $parameters),
38       5 => $this->getMockProcessor($route_name, $route, $parameters),
39       0 => $this->getMockProcessor($route_name, $route, $parameters),
40     ];
41
42     // Add the processors in reverse order.
43     foreach ($processors as $priority => $processor) {
44       $this->processorManager->addOutbound($processor, $priority);
45     }
46
47     $bubbleable_metadata = new BubbleableMetadata();
48     $this->processorManager->processOutbound($route_name, $route, $parameters, $bubbleable_metadata);
49     // Default cacheability is: permanently cacheable, no cache tags/contexts.
50     $this->assertEquals((new BubbleableMetadata())->setCacheMaxAge(Cache::PERMANENT), $bubbleable_metadata);
51   }
52
53   /**
54    * Returns a mock Route processor object.
55    *
56    * @param string $route_name
57    *   The route name.
58    * @param \Symfony\Component\Routing\Route $route
59    *   The Route to use in mock with() expectation.
60    * @param array $parameters
61    *   The parameters to use in mock with() expectation.
62    *
63    * @return \Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
64    */
65   protected function getMockProcessor($route_name, $route, $parameters) {
66     $processor = $this->getMock('Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface');
67     $processor->expects($this->once())
68       ->method('processOutbound')
69       ->with($route_name, $route, $parameters);
70
71     return $processor;
72   }
73
74 }