/** * {@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'); } }
public function getMatchedRoute() { return parent::getMatchedRoute(); }