Passing array to Router::register as middleware creates a DispatchStack

This commit is contained in:
PJ Dietz 2015-05-10 12:15:39 -04:00
parent 6507028dd3
commit 3786cfaade
2 changed files with 15 additions and 0 deletions

View File

@ -65,6 +65,9 @@ class Router implements RouterInterface
public function register($method, $target, $middleware)
{
$route = $this->getRouteForTarget($target);
if (is_array($middleware)) {
$middleware = $this->dispatchProvider->getDispatchStack($middleware);
}
$route->getMethodMap()->register($method, $middleware);
return $this;
}

View File

@ -116,6 +116,18 @@ class RouterTest extends \PHPUnit_Framework_TestCase
$this->methodMap->register("GET", "middleware")->shouldHaveBeenCalled();
}
/**
* @covers ::register
*/
public function testCreatesDispatchStackForMiddlewareArray()
{
$stack = $this->prophesize('WellRESTed\MiddlewareInterface');
$this->dispatchProvider->getDispatchStack(Argument::any())->willReturn($stack->reveal());
$this->router->register("GET", "/", ["middleware1", "middleware2"]);
$this->methodMap->register("GET", $stack->reveal())->shouldHaveBeenCalled();
}
// ------------------------------------------------------------------------
// Dispatching