Allow Router to assign middleware to MethodMap

This commit is contained in:
PJ Dietz 2015-04-06 19:12:16 -04:00
parent 0d204d9279
commit d66ba80ec9
2 changed files with 21 additions and 0 deletions

View File

@ -43,6 +43,9 @@ class Router implements MiddlewareInterface
*/
public function add($target, $middleware, $defaultPattern = null, $variablePatterns = null)
{
if (is_array($middleware)) {
$middleware = $this->getMethodMap($middleware);
}
$this->routeFactory->registerRoute($target, $middleware, $defaultPattern, $variablePatterns);
}
@ -66,4 +69,9 @@ class Router implements MiddlewareInterface
$dispatcher->dispatch($middleware, $request, $response);
}
}
protected function getMethodMap(array $map)
{
return new MethodMap($map);
}
}

View File

@ -9,6 +9,7 @@ use WellRESTed\Routing\Router;
/**
* @covers WellRESTed\Routing\Router
* @uses WellRESTed\Routing\Dispatcher
* @uses WellRESTed\Routing\MethodMap
* @uses WellRESTed\Routing\RouteTable
* @uses WellRESTed\Routing\Route\RouteFactory
* @uses WellRESTed\Routing\Route\RegexRoute
@ -73,4 +74,16 @@ class RouterTest extends \PHPUnit_Framework_TestCase
$statusMiddleware->dispatch(Argument::cetera())->shouldHaveBeenCalled();
}
public function testRegisterRouteWithMethodMap()
{
$this->request->getRequestTarget()->willReturn("/cats/");
$this->request->getMethod()->willReturn("GET");
$router = new Router();
$router->add("/cats/", ["GET" => $this->middleware->reveal()]);
$router->dispatch($this->request->reveal(), $this->response->reveal());
$this->middleware->dispatch(Argument::cetera())->shouldHaveBeenCalled();
}
}