Ensure $args propagate from Router to Handlers
This commit is contained in:
parent
512897effd
commit
75088499b8
|
|
@ -78,10 +78,10 @@ class Router implements HandlerInterface
|
|||
*
|
||||
* Respond with a 404 Not Found if no route provides a response.
|
||||
*/
|
||||
public function respond()
|
||||
public function respond($args = null)
|
||||
{
|
||||
$request = Request::getRequest();
|
||||
$response = $this->getResponse($request);
|
||||
$response = $this->getResponse($request, $args);
|
||||
if (!$response) {
|
||||
$response = $this->getNoRouteResponse($request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ namespace pjdietz\WellRESTed\Test;
|
|||
|
||||
use pjdietz\WellRESTed\Interfaces\HandlerInterface;
|
||||
use pjdietz\WellRESTed\Interfaces\RequestInterface;
|
||||
use pjdietz\WellRESTed\Interfaces\ResponseInterface;
|
||||
use pjdietz\WellRESTed\Response;
|
||||
use pjdietz\WellRESTed\Router;
|
||||
use pjdietz\WellRESTed\Routes\StaticRoute;
|
||||
|
|
@ -134,6 +133,25 @@ class RouterTest extends \PHPUnit_Framework_TestCase
|
|||
];
|
||||
}
|
||||
|
||||
public function testInjection()
|
||||
{
|
||||
$mockRequest = $this->getMock('\pjdietz\WellRESTed\Interfaces\RequestInterface');
|
||||
$mockRequest->expects($this->any())
|
||||
->method('getPath')
|
||||
->will($this->returnValue("/2/3"));
|
||||
|
||||
$dependencies = [
|
||||
"add" => function ($a, $b) {
|
||||
return $a + $b;
|
||||
}
|
||||
];
|
||||
|
||||
$router = new Router();
|
||||
$router->addRoute(new TemplateRoute("/{a}/{b}", __NAMESPACE__ . "\\InjectionHandler"));
|
||||
$resp = $router->getResponse($mockRequest, $dependencies);
|
||||
$this->assertEquals("5", $resp->getBody());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -184,3 +202,14 @@ class NotFoundHandler implements HandlerInterface
|
|||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
class InjectionHandler implements HandlerInterface
|
||||
{
|
||||
public function getResponse(RequestInterface $request, array $args = null)
|
||||
{
|
||||
$response = new Response(200);
|
||||
$body = $args["add"]($args["a"], $args["b"]);
|
||||
$response->setBody($body);
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue