You are here

RouterTest.php in Drupal 8

File

core/tests/Drupal/Tests/Core/Routing/RouterTest.php
View source
<?php

namespace Drupal\Tests\Core\Routing;

use Drupal\Core\Path\CurrentPathStack;
use Drupal\Core\Routing\RequestContext;
use Drupal\Core\Routing\RouteCompiler;
use Drupal\Core\Routing\RouteProviderInterface;
use Drupal\Core\Routing\Router;
use Drupal\Core\Routing\UrlGeneratorInterface;
use Drupal\Tests\UnitTestCase;
use Prophecy\Argument;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;

/**
 * @coversDefaultClass \Drupal\Core\Routing\Router
 * @group Routing
 */
class RouterTest extends UnitTestCase {

  /**
   * @covers ::applyFitOrder
   */
  public function testMatchesWithDifferentFitOrder() {
    $route_provider = $this
      ->prophesize(RouteProviderInterface::class);
    $route_collection = new RouteCollection();
    $route = new Route('/user/{user}');
    $route
      ->setOption('compiler_class', RouteCompiler::class);
    $route_collection
      ->add('user_view', $route);
    $route = new Route('/user/login');
    $route
      ->setOption('compiler_class', RouteCompiler::class);
    $route_collection
      ->add('user_login', $route);
    $route_provider
      ->getRouteCollectionForRequest(Argument::any())
      ->willReturn($route_collection);
    $url_generator = $this
      ->prophesize(UrlGeneratorInterface::class);
    $current_path_stack = $this
      ->prophesize(CurrentPathStack::class);
    $router = new Router($route_provider
      ->reveal(), $current_path_stack
      ->reveal(), $url_generator
      ->reveal());
    $request_context = $this
      ->prophesize(RequestContext::class);
    $request_context
      ->getScheme()
      ->willReturn('http');
    $router
      ->setContext($request_context
      ->reveal());
    $current_path_stack
      ->getPath(Argument::any())
      ->willReturn('/user/1');
    $result = $router
      ->match('/user/1');
    $this
      ->assertEquals('user_view', $result['_route']);
    $current_path_stack
      ->getPath(Argument::any())
      ->willReturn('/user/login');
    $result = $router
      ->match('/user/login');
    $this
      ->assertEquals('user_login', $result['_route']);
  }

}

Classes

Namesort descending Description
RouterTest @coversDefaultClass \Drupal\Core\Routing\Router @group Routing