From 3786cfaadee20a3db2698796a7fa7d8fe5d7bff3 Mon Sep 17 00:00:00 2001 From: PJ Dietz Date: Sun, 10 May 2015 12:15:39 -0400 Subject: [PATCH] Passing array to Router::register as middleware creates a DispatchStack --- src/Routing/Router.php | 3 +++ test/tests/unit/Routing/RouterTest.php | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/Routing/Router.php b/src/Routing/Router.php index 131e510..e44ba69 100644 --- a/src/Routing/Router.php +++ b/src/Routing/Router.php @@ -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; } diff --git a/test/tests/unit/Routing/RouterTest.php b/test/tests/unit/Routing/RouterTest.php index 73aa6a3..a372f09 100644 --- a/test/tests/unit/Routing/RouterTest.php +++ b/test/tests/unit/Routing/RouterTest.php @@ -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