public function NestedMatcherTest::testNestedMatcherPriority

Test priorities and exception handling

File

drupal/core/vendor/symfony-cmf/routing/Symfony/Cmf/Component/Routing/Tests/NestedMatcher/NestedMatcherTest.php, line 71

Class

NestedMatcherTest

Namespace

Symfony\Cmf\Component\Routing\Tests\NestedMatcher

Code

public function testNestedMatcherPriority() {
  $request = Request::create('/path/one');
  $routeCollection = new RouteCollection();
  $route = $this
    ->getMockBuilder('Symfony\\Component\\Routing\\Route')
    ->disableOriginalConstructor()
    ->getMock();
  $routeCollection
    ->add('route', $route);
  $wrongProvider = $this
    ->buildMock("Symfony\\Cmf\\Component\\Routing\\RouteProviderInterface");
  $wrongProvider
    ->expects($this
    ->never())
    ->method('getRouteCollectionForRequest');
  $this->provider
    ->expects($this
    ->once())
    ->method('getRouteCollectionForRequest')
    ->with($request)
    ->will($this
    ->returnValue($routeCollection));
  $this->routeFilter1
    ->expects($this
    ->once())
    ->method('filter')
    ->with($routeCollection, $request)
    ->will($this
    ->throwException(new ResourceNotFoundException()));
  $this->routeFilter2
    ->expects($this
    ->never())
    ->method('filter');
  $this->finalMatcher
    ->expects($this
    ->never())
    ->method('finalMatch');
  $matcher = new NestedMatcher($wrongProvider);
  $matcher
    ->setRouteProvider($this->provider);
  $matcher
    ->addRouteFilter($this->routeFilter2, 10);
  $matcher
    ->addRouteFilter($this->routeFilter1, 20);
  $matcher
    ->setFinalMatcher($this->finalMatcher);
  try {
    $matcher
      ->matchRequest($request);
    fail('nested matcher is eating exception');
  } catch (ResourceNotFoundException $e) {

    // expected
  }
}