3 namespace Drupal\Tests\Core\RouteProcessor;
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;
12 * @coversDefaultClass \Drupal\Core\RouteProcessor\RouteProcessorManager
13 * @group RouteProcessor
15 class RouteProcessorManagerTest extends UnitTestCase {
18 * The route processor manager.
20 * @var \Drupal\Core\RouteProcessor\RouteProcessorManager
22 protected $processorManager;
24 protected function setUp() {
25 $this->processorManager = new RouteProcessorManager();
29 * Tests the Route process manager functionality.
31 public function testRouteProcessorManager() {
32 $route = new Route('');
33 $parameters = ['test' => 'test'];
34 $route_name = 'test_name';
37 10 => $this->getMockProcessor($route_name, $route, $parameters),
38 5 => $this->getMockProcessor($route_name, $route, $parameters),
39 0 => $this->getMockProcessor($route_name, $route, $parameters),
42 // Add the processors in reverse order.
43 foreach ($processors as $priority => $processor) {
44 $this->processorManager->addOutbound($processor, $priority);
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);
54 * Returns a mock Route processor object.
56 * @param string $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.
63 * @return \Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
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);