From 457dbc57100f79b3fcab9bd3403eb831ff2a9fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sat, 9 Apr 2016 07:51:03 +0200 Subject: [PATCH] [BUGFIX] Fixed issue #83 - Added more tests. --- src/Pecee/SimpleRouter/RouterBase.php | 8 +++-- test/GroupTest.php | 51 +++++++++++++++++++++++++++ test/MiddlewareTest.php | 9 ++--- test/RouterRouteTest.php | 47 +++++++++--------------- 4 files changed, 77 insertions(+), 38 deletions(-) create mode 100644 test/GroupTest.php diff --git a/src/Pecee/SimpleRouter/RouterBase.php b/src/Pecee/SimpleRouter/RouterBase.php index da7d6e1..e6c6242 100644 --- a/src/Pecee/SimpleRouter/RouterBase.php +++ b/src/Pecee/SimpleRouter/RouterBase.php @@ -69,12 +69,12 @@ class RouterBase { $newPrefixes = $prefixes; if($route->getPrefix()) { - array_push($newPrefixes, rtrim($route->getPrefix(), '/')); + array_push($newPrefixes, trim($route->getPrefix(), '/')); } if(!($route instanceof RouterGroup)) { if(is_array($newPrefixes) && count($newPrefixes) && $backStack) { - $route->setUrl( join('/', $newPrefixes) . $route->getUrl() ); + $route->setUrl( '/' . join('/', $newPrefixes) . $route->getUrl() ); } $group = null; @@ -455,4 +455,8 @@ class RouterBase { return self::$instance; } + public static function reset() { + self::$instance = null; + } + } \ No newline at end of file diff --git a/test/GroupTest.php b/test/GroupTest.php new file mode 100644 index 0000000..160a4f6 --- /dev/null +++ b/test/GroupTest.php @@ -0,0 +1,51 @@ +result = true; + } + + public function testGroup() { + \Pecee\SimpleRouter\RouterBase::reset(); + + $this->result = false; + + \Pecee\SimpleRouter\SimpleRouter::group(['prefix' => '/group'], $this->group()); + + try { + \Pecee\SimpleRouter\SimpleRouter::start(); + } catch(Exception $e) { + + } + + $this->assertTrue($this->result); + } + + public function testNestedGroup() { + \Pecee\SimpleRouter\RouterBase::reset(); + + \Pecee\Http\Request::getInstance()->setUri('/api/v1/test'); + + \Pecee\SimpleRouter\SimpleRouter::group(['prefix' => '/api'], function() { + \Pecee\SimpleRouter\SimpleRouter::group(['prefix' => '/v1'], function() { + \Pecee\SimpleRouter\SimpleRouter::get('/test', 'DummyController@start'); + }); + }); + + \Pecee\SimpleRouter\SimpleRouter::start(); + } + +} \ No newline at end of file diff --git a/test/MiddlewareTest.php b/test/MiddlewareTest.php index 7487e2b..129df6d 100644 --- a/test/MiddlewareTest.php +++ b/test/MiddlewareTest.php @@ -16,15 +16,12 @@ class MiddlewareTest extends PHPUnit_Framework_TestCase { \Pecee\Http\Request::getInstance()->setMethod('get'); - $router = new \Pecee\SimpleRouter\RouterBase(); + \Pecee\SimpleRouter\RouterBase::reset(); - $route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start'); - $route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_GET)); - $route->addSettings(['middleware' => 'DummyMiddleware']); - $router->addRoute($route); + \Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start', ['middleware' => 'DummyMiddleware']); try { - $router->routeRequest(); + \Pecee\SimpleRouter\SimpleRouter::start(); }catch(Exception $e) { $this->assertTrue(($e instanceof MiddlewareLoadedException)); return; diff --git a/test/RouterRouteTest.php b/test/RouterRouteTest.php index c003dce..01984ae 100644 --- a/test/RouterRouteTest.php +++ b/test/RouterRouteTest.php @@ -13,60 +13,47 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase { } public function testGet() { + + \Pecee\SimpleRouter\RouterBase::reset(); + \Pecee\Http\Request::getInstance()->setMethod('get'); - $router = new \Pecee\SimpleRouter\RouterBase(); - - $route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start'); - $route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_GET)); - - $router->addRoute($route); - $router->routeRequest(); + \Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start'); + \Pecee\SimpleRouter\SimpleRouter::start(); } public function testPost() { \Pecee\Http\Request::getInstance()->setMethod('post'); - $router = new \Pecee\SimpleRouter\RouterBase(); + \Pecee\SimpleRouter\RouterBase::reset(); - $route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start'); - - $route->addSettings(array()); - $route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_POST)); - - $router->addRoute($route); - $router->routeRequest(); + \Pecee\SimpleRouter\SimpleRouter::post('/my/test/url', 'DummyController@start'); + \Pecee\SimpleRouter\SimpleRouter::start(); } public function testPut() { \Pecee\Http\Request::getInstance()->setMethod('put'); - $router = new \Pecee\SimpleRouter\RouterBase(); - - $route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start'); - $route->addSettings(array()); - $route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_PUT)); - - $router->addRoute($route); - $router->routeRequest(); + \Pecee\SimpleRouter\RouterBase::reset(); + \Pecee\SimpleRouter\SimpleRouter::put('/my/test/url', 'DummyController@start'); + \Pecee\SimpleRouter\SimpleRouter::start(); } public function testDelete() { \Pecee\Http\Request::getInstance()->setMethod('delete'); - $router = new \Pecee\SimpleRouter\RouterBase(); + \Pecee\SimpleRouter\RouterBase::reset(); - $route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start'); - $route->addSettings(array()); - $route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_DELETE)); - - $router->addRoute($route); - $router->routeRequest(); + \Pecee\SimpleRouter\SimpleRouter::delete('/my/test/url', 'DummyController@start'); + \Pecee\SimpleRouter\SimpleRouter::start(); } public function testMethodNotAllowed() { + + \Pecee\SimpleRouter\RouterBase::reset(); + \Pecee\Http\Request::getInstance()->setMethod('post'); \Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');