summaryrefslogtreecommitdiffstats
path: root/tests/Router/Runner/CallbackTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Router/Runner/CallbackTest.php')
-rw-r--r--tests/Router/Runner/CallbackTest.php89
1 files changed, 49 insertions, 40 deletions
diff --git a/tests/Router/Runner/CallbackTest.php b/tests/Router/Runner/CallbackTest.php
index 8a31794..39c2798 100644
--- a/tests/Router/Runner/CallbackTest.php
+++ b/tests/Router/Runner/CallbackTest.php
@@ -1,64 +1,73 @@
<?php
+namespace Jasny\Router;
+
use Jasny\Router\Route;
use Jasny\Router\Runner\Callback;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
-class CallbackTest extends PHPUnit_Framework_TestCase
+use Jasny\Router\TestHelpers;
+
+/**
+ * @covers Jasny\Router\Runner\Callback
+ */
+class CallbackTest extends \PHPUnit_Framework_TestCase
{
+ use TestHelpers;
+
/**
* Test creating Callback runner
- *
- * @dataProvider callbackProvider
- * @param Route $route
- * @param boolean $positive
*/
- public function testCallback($route, $positive)
+ public function testCallback()
{
- $runner = new Callback($route);
-
$request = $this->createMock(ServerRequestInterface::class);
$response = $this->createMock(ResponseInterface::class);
- $request->expects($this->once())->method('getAttribute')->with($this->equalTo('route'))->will($this->returnValue($route));
-
- if (!$positive) $this->expectException(\RuntimeException::class);
- $result = $runner->run($request, $response);
-
- if (!$positive) return;
-
- $this->assertEquals($request, $result['request'], "Request object was not passed correctly to result");
- $this->assertEquals($response, $result['response'], "Response object was not passed correctly to result");
+ $finalResponse = $this->createMock(ResponseInterface::class);
+
+ $route = $this->createMock(Route::class);
+ $route->fn = $this->createCallbackMock($this->once(), [$request, $response], $finalResponse);
+
+ $request->expects($this->once())->method('getAttribute')->with('route')->willReturn($route);
+
+ $runner = new Callback($route);
+ $result = $runner($request, $response);
+
+ $this->assertSame($finalResponse, $result);
}
-
-
+
/**
- * Provide data fpr testing 'create' method
+ * @expectedException RuntimeException
+ * @expectedExceptionMessage 'fn' property of route shoud be a callable
*/
- public function callbackProvider()
+ public function testNoCallback()
{
- $callback = function($request, $response) {
- return ['request' => $request, 'response' => $response];
- };
-
- return [
- [Route::create(['fn' => $callback, 'value' => 'test']), true],
- [Route::create(['fn' => [$this, 'getCallback'], 'value' => 'test']), true],
- [Route::create(['controller' => 'TestController', 'value' => 'test']), false],
- [Route::create(['file' => 'some_file.php', 'value' => 'test']), false],
- [Route::create(['test' => 'test']), false],
- ];
+ $request = $this->createMock(ServerRequestInterface::class);
+ $response = $this->createMock(ResponseInterface::class);
+
+ $route = $this->createMock(Route::class);
+
+ $request->expects($this->once())->method('getAttribute')->with('route')->willReturn($route);
+
+ $runner = new Callback($route);
+ $runner($request, $response);
}
-
+
/**
- * Testable callback for creating Route
- *
- * @param ServerRequestInterface $request
- * @param ResponseInterface $response
- * @return array
+ * @expectedException RuntimeException
+ * @expectedExceptionMessage 'fn' property of route shoud be a callable
*/
- public function getCallback($request, $response)
+ public function testInvalidCallback()
{
- return ['request' => $request, 'response' => $response];
+ $request = $this->createMock(ServerRequestInterface::class);
+ $response = $this->createMock(ResponseInterface::class);
+
+ $route = $this->createMock(Route::class);
+ $route->fn = 'foo bar zoo';
+
+ $request->expects($this->once())->method('getAttribute')->with('route')->willReturn($route);
+
+ $runner = new Callback($route);
+ $runner($request, $response);
}
}