protected function setUp() { $routes = new RouteCollection(); $first_route = new Route('/test/one'); $second_route = new Route('/test/two/{narf}'); $third_route = new Route('/test/two/'); $fourth_route = new Route('/test/four', array(), array('_scheme' => 'https')); $routes->add('test_1', $first_route); $routes->add('test_2', $second_route); $routes->add('test_3', $third_route); $routes->add('test_4', $fourth_route); // Create a route provider stub. $provider = $this->getMockBuilder('Drupal\\Core\\Routing\\RouteProvider')->disableOriginalConstructor()->getMock(); // We need to set up return value maps for both the getRouteByName() and the // getRoutesByNames() method calls on the route provider. The parameters // are not passed in and default to an empty array. $route_name_return_map = $routes_names_return_map = array(); $return_map_values = array(array('route_name' => 'test_1', 'return' => $first_route), array('route_name' => 'test_2', 'return' => $second_route), array('route_name' => 'test_3', 'return' => $third_route), array('route_name' => 'test_4', 'return' => $fourth_route)); foreach ($return_map_values as $values) { $route_name_return_map[] = array($values['route_name'], $values['return']); $routes_names_return_map[] = array(array($values['route_name']), $values['return']); } $provider->expects($this->any())->method('getRouteByName')->will($this->returnValueMap($route_name_return_map)); $provider->expects($this->any())->method('getRoutesByNames')->will($this->returnValueMap($routes_names_return_map)); // Create an alias manager stub. $alias_manager = $this->getMockBuilder('Drupal\\Core\\Path\\AliasManager')->disableOriginalConstructor()->getMock(); $alias_manager->expects($this->any())->method('getAliasByPath')->will($this->returnCallback(array($this, 'aliasManagerCallback'))); $this->aliasManager = $alias_manager; $this->requestStack = new RequestStack(); $request = Request::create('/some/path'); $this->requestStack->push($request); $context = new RequestContext(); $context->fromRequestStack($this->requestStack); $processor = new PathProcessorAlias($this->aliasManager); $processor_manager = new PathProcessorManager(); $processor_manager->addOutbound($processor, 1000); $this->routeProcessorManager = $this->getMockBuilder('Drupal\\Core\\RouteProcessor\\RouteProcessorManager')->disableOriginalConstructor()->getMock(); $config_factory_stub = $this->getConfigFactoryStub(array('system.filter' => array('protocols' => array('http', 'https')))); $generator = new UrlGenerator($provider, $processor_manager, $this->routeProcessorManager, $config_factory_stub, NULL, $this->requestStack); $generator->setContext($context); $this->generator = $generator; }
/** * @covers ::generateFromRoute */ public function testUrlGenerationWithDisabledPathProcessingByRouteAndOptedInPathProcessing() { $path_processor = $this->prophesize(OutboundPathProcessorInterface::class); $path_processor->processOutbound('/test/one', Argument::cetera())->willReturn('/hello/world')->shouldBeCalled(); $provider = $this->prophesize(RouteProviderInterface::class); $provider->getRouteByName('test_1')->willReturn(new Route('/test/one', [], [], ['default_url_options' => ['path_processing' => FALSE]])); $generator = new UrlGenerator($provider->reveal(), $path_processor->reveal(), $this->routeProcessorManager, $this->requestStack, ['http', 'https']); $generator->setContext($this->context); $url = $generator->generateFromRoute('test_1', [], ['path_processing' => TRUE]); $this->assertEquals('/hello/world', $url); }