Skip to content
Snippets Groups Projects
Commit 1d803631 authored by Larry Garfield's avatar Larry Garfield Committed by Alex Bronstein
Browse files

Add unit tests for FirstEntryFinalMatcher.

parent 02fd4b23
No related branches found
No related tags found
2 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!789Issue #3210310: Adjust Database API to remove deprecated Drupal 9 code in Drupal 10
<?php
/**
* @file
* Definition of Drupal\system\Tests\Routing\NestedMatcherTest.
*/
namespace Drupal\system\Tests\Routing;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use Drupal\simpletest\UnitTestBase;
use Drupal\Core\Routing\HttpMethodMatcher;
use Drupal\Core\Routing\NestedMatcher;
use Drupal\Core\Routing\FirstEntryFinalMatcher;
use Exception;
/**
* Basic tests for the NestedMatcher class.
*/
class FirstEntryFinalMatcherTest extends UnitTestBase {
/**
* A collection of shared fixture data for tests.
*
* @var RoutingFixtures
*/
protected $fixtures;
public static function getInfo() {
return array(
'name' => 'FirstEntryFinalMatcher tests',
'description' => 'Confirm that the FirstEntryFinalMatcher is working properly.',
'group' => 'Routing',
);
}
function __construct($test_id = NULL) {
parent::__construct($test_id);
$this->fixtures = new RoutingFixtures();
}
public function setUp() {
parent::setUp();
}
/**
* Confirms the final matcher returns correct attributes for static paths.
*/
public function testFinalMatcherStatic() {
$collection = new RouteCollection();
$collection->add('route_a', new Route('/path/one', array(
'_controller' => 'foo',
)));
$request = Request::create('/path/one', 'GET');
$matcher = new FirstEntryFinalMatcher();
$matcher->setCollection($collection);
$attributes = $matcher->matchRequest($request);
$this->assertEqual($attributes['_route'], 'route_a', 'The correct matching route was found.');
$this->assertEqual($attributes['_controller'], 'foo', 'The correct controller was found.');
}
/**
* Confirms the final matcher returns correct attributes for pattern paths.
*/
public function testFinalMatcherPattern() {
$collection = new RouteCollection();
$collection->add('route_a', new Route('/path/one/{value}', array(
'_controller' => 'foo',
)));
$request = Request::create('/path/one/narf', 'GET');
$request->attributes->set('system_path', 'path/one/narf');
$matcher = new FirstEntryFinalMatcher();
$matcher->setCollection($collection);
$attributes = $matcher->matchRequest($request);
$this->assertEqual($attributes['_route'], 'route_a', 'The correct matching route was found.');
$this->assertEqual($attributes['_controller'], 'foo', 'The correct controller was found.');
$this->assertEqual($attributes['value'], 'narf', 'Required placeholder value found.');
}
/**
* Confirms the final matcher returns correct attributes with default values.
*/
public function testFinalMatcherPatternDefalts() {
$collection = new RouteCollection();
$collection->add('route_a', new Route('/path/one/{value}', array(
'_controller' => 'foo',
'value' => 'poink'
)));
$request = Request::create('/path/one', 'GET');
$request->attributes->set('system_path', 'path/one');
$matcher = new FirstEntryFinalMatcher();
$matcher->setCollection($collection);
$attributes = $matcher->matchRequest($request);
$this->assertEqual($attributes['_route'], 'route_a', 'The correct matching route was found.');
$this->assertEqual($attributes['_controller'], 'foo', 'The correct controller was found.');
$this->assertEqual($attributes['value'], 'poink', 'Optional placeholder value used default.');
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment