/**
  * {@inheritdoc}
  */
 public function match(Request $request)
 {
     $this->router->handle($request->getUri()->getPath());
     if (!$this->router->wasMatched()) {
         // TODO Is it worth to validate, if route matches but the method is incompatible?
         return RouteResult::fromRouteFailure();
     }
     $matchedRoute = $this->router->getMatchedRoute();
     return RouteResult::fromRouteMatch($matchedRoute->getName(), $this->router->getNamespaceName(), $this->collectParams($matchedRoute));
 }
 /**
  * @dataProvider routesProvider
  *
  * @param $arRoute
  * @param $strUri
  * @param $strClassName
  */
 public function testRoutes($arRoute, $strUri, $strClassName)
 {
     $this->router->add($arRoute['route'], $arRoute['parameters'])->setName($arRoute['name']);
     $this->router->handle($strUri);
     $boolMatched = $this->router->wasMatched();
     $this->assertTrue($boolMatched, 'failed to match ' . $strUri);
     $strRouteName = $this->router->getMatchedRoute()->getName();
     $this->assertEquals($arRoute['name'], $strRouteName, 'matched wrong route');
     $this->setUpDispatcher();
     $this->dispatcher->dispatch();
     $strControllerClassName = $this->dispatcher->getControllerClass();
     $this->assertEquals($strClassName, $strControllerClassName, 'wrong controller class name');
 }
 /**
  * @dataProvider easyMatchedProvider
  */
 public function testEasyMatched($strUri, $strController, $strAction, $strRouteName, $arParameters = array())
 {
     $this->router->handle($strUri);
     $boolMatched = $this->router->wasMatched();
     $this->assertTrue($boolMatched, 'route ' . $strUri . ' does not match any of ' . print_r($this->routes, true) . ' when it should');
     $this->assertEquals($strRouteName, $this->router->getMatchedRoute()->getName(), 'matches wrong route');
     $this->assertEquals($strController, $this->router->getControllerName(), 'wrong controller name');
     $this->assertEquals($strAction, $this->router->getActionName(), 'wrong action name');
     $arActualParameters = $this->router->getParams();
     foreach ($arParameters as $key => $value) {
         $this->assertArrayHasKey($key, $arParameters, 'key "' . $key . '" not found');
         $this->assertEquals($arParameters[$key], $arActualParameters[$key], 'parameter "' . $key . '" mismatch');
     }
 }
 /**
  * @covers initialize
  *
  *
  * @dataProvider easyMatchRoutesDataProvider
  */
 public function testMatchEasyRoutes($strUri, $strModule, $strController, $strAction, $strRouteName, $arParameters)
 {
     $this->router->handle($strUri);
     $boolMatched = $this->router->wasMatched();
     $this->assertTrue($boolMatched, 'route does not match when it should');
     $this->assertEquals($strRouteName, $this->router->getMatchedRoute()->getName(), 'matched wrong route: ' . $this->router->getMatchedRoute()->getPattern());
     $this->assertEquals($strModule, $this->router->getModuleName(), 'wrong module name');
     $this->assertEquals($strController, $this->router->getControllerName(), 'wrong controller name');
     $this->assertEquals($strAction, $this->router->getActionName(), 'wrong action name');
     $arActualParameters = $this->router->getParams();
     foreach ($arParameters as $key => $value) {
         $this->assertArrayHasKey($key, $arParameters, 'key "' . $key . '" not found');
         $this->assertEquals($arParameters[$key], $arActualParameters[$key], 'parameter "' . $key . '" mismatch');
     }
 }
Example #5
0
 public function getMatchedRoute()
 {
     return parent::getMatchedRoute();
 }