From 5327b1dcd1e74bc7e25be055c87c222d584d5c8e Mon Sep 17 00:00:00 2001 From: Samuel Demirdjian Date: Mon, 18 May 2015 14:29:08 +0300 Subject: [PATCH 1/3] Use a dummy controller when in RequestTest::test_param A cleaner way to test parameters passed by `Route` to `Request`: Use a dummy controller instead of the empty `try...catch` that was trying to silence "controller not found" 404 exception. --- tests/kohana/RequestTest.php | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/tests/kohana/RequestTest.php b/tests/kohana/RequestTest.php index eb31f4710..4c3b7ea23 100644 --- a/tests/kohana/RequestTest.php +++ b/tests/kohana/RequestTest.php @@ -125,15 +125,11 @@ public function test_param() { $route = new Route('((/(/)))'); - $uri = 'foo/bar/id'; + $uri = 'kohana_requesttest_dummy/foobar/some_id'; $request = Request::factory($uri, NULL, TRUE, array($route)); // We need to execute the request before it has matched a route - try - { - $request->execute(); - } - catch (Exception $e) {} + $request->execute(); $this->assertArrayHasKey('id', $request->param()); $this->assertArrayNotHasKey('foo', $request->param()); @@ -150,17 +146,13 @@ public function test_param() $this->assertArrayNotHasKey('route', $params); $route = new Route('()', array('uri' => '.+')); - $route->defaults(array('controller' => 'foobar', 'action' => 'index')); - $request = Request::factory('foobar', NULL, TRUE, array($route)); + $route->defaults(array('controller' => 'kohana_requesttest_dummy', 'action' => 'foobar')); + $request = Request::factory('kohana_requesttest_dummy', NULL, TRUE, array($route)); // We need to execute the request before it has matched a route - try - { - $request->execute(); - } - catch (Exception $e) {} + $request->execute(); - $this->assertSame('foobar', $request->param('uri')); + $this->assertSame('kohana_requesttest_dummy', $request->param('uri')); } /** @@ -730,9 +722,9 @@ public function test_passes_client_params() } // End Kohana_RequestTest -class Controller_Kohana_RequestTest_Dummy extends Controller +class Controller_Kohana_RequestdTest_Dummy extends Controller { - public function action_index() + public function action_foobar() { } From 73e9dc8cc6f94341b510f07c2a7df6ed1ddaf4c3 Mon Sep 17 00:00:00 2001 From: Samuel Demirdjian Date: Fri, 29 May 2015 13:11:35 +0300 Subject: [PATCH 2/3] add failing test: Response should have `200` success status --- tests/kohana/RequestTest.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/kohana/RequestTest.php b/tests/kohana/RequestTest.php index 4c3b7ea23..fb8f9ff6a 100644 --- a/tests/kohana/RequestTest.php +++ b/tests/kohana/RequestTest.php @@ -129,8 +129,9 @@ public function test_param() $request = Request::factory($uri, NULL, TRUE, array($route)); // We need to execute the request before it has matched a route - $request->execute(); + $response = $request->execute(); + $this->assertSame(200, $response->status()); $this->assertArrayHasKey('id', $request->param()); $this->assertArrayNotHasKey('foo', $request->param()); $this->assertEquals($request->uri(), $uri); @@ -150,8 +151,9 @@ public function test_param() $request = Request::factory('kohana_requesttest_dummy', NULL, TRUE, array($route)); // We need to execute the request before it has matched a route - $request->execute(); + $response = $request->execute(); + $this->assertSame(200, $response->status()); $this->assertSame('kohana_requesttest_dummy', $request->param('uri')); } @@ -724,8 +726,17 @@ public function test_passes_client_params() class Controller_Kohana_RequestdTest_Dummy extends Controller { + // hard coded dummy response + protected $dummy_response = "this is a dummy response"; + public function action_foobar() { - + $this->response->body($this->dummy_response); } + + public function get_dummy_response() + { + return $this->dummy_response; + } + } // End Kohana_RequestTest From 86d34660cf345b201d5210cfad0db1ad0fa5ab69 Mon Sep 17 00:00:00 2001 From: Samuel Demirdjian Date: Fri, 29 May 2015 15:00:09 +0300 Subject: [PATCH 3/3] Fix tests: remove erroneous letter `d` from dummy controller class name also test for expected response --- tests/kohana/RequestTest.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/kohana/RequestTest.php b/tests/kohana/RequestTest.php index fb8f9ff6a..1ec099bb3 100644 --- a/tests/kohana/RequestTest.php +++ b/tests/kohana/RequestTest.php @@ -130,8 +130,10 @@ public function test_param() // We need to execute the request before it has matched a route $response = $request->execute(); + $controller = new Controller_Kohana_RequestTest_Dummy($request, $response); $this->assertSame(200, $response->status()); + $this->assertSame($controller->get_expected_response(), $response->body()); $this->assertArrayHasKey('id', $request->param()); $this->assertArrayNotHasKey('foo', $request->param()); $this->assertEquals($request->uri(), $uri); @@ -152,8 +154,10 @@ public function test_param() // We need to execute the request before it has matched a route $response = $request->execute(); + $controller = new Controller_Kohana_RequestTest_Dummy($request, $response); $this->assertSame(200, $response->status()); + $this->assertSame($controller->get_expected_response(), $response->body()); $this->assertSame('kohana_requesttest_dummy', $request->param('uri')); } @@ -724,7 +728,7 @@ public function test_passes_client_params() } // End Kohana_RequestTest -class Controller_Kohana_RequestdTest_Dummy extends Controller +class Controller_Kohana_RequestTest_Dummy extends Controller { // hard coded dummy response protected $dummy_response = "this is a dummy response"; @@ -734,7 +738,7 @@ public function action_foobar() $this->response->body($this->dummy_response); } - public function get_dummy_response() + public function get_expected_response() { return $this->dummy_response; }