mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-17 08:47:52 +00:00
@@ -69,12 +69,12 @@ class RouterBase {
|
|||||||
$newPrefixes = $prefixes;
|
$newPrefixes = $prefixes;
|
||||||
|
|
||||||
if($route->getPrefix()) {
|
if($route->getPrefix()) {
|
||||||
array_push($newPrefixes, rtrim($route->getPrefix(), '/'));
|
array_push($newPrefixes, trim($route->getPrefix(), '/'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!($route instanceof RouterGroup)) {
|
if(!($route instanceof RouterGroup)) {
|
||||||
if(is_array($newPrefixes) && count($newPrefixes) && $backStack) {
|
if(is_array($newPrefixes) && count($newPrefixes) && $backStack) {
|
||||||
$route->setUrl( join('/', $newPrefixes) . $route->getUrl() );
|
$route->setUrl( '/' . join('/', $newPrefixes) . $route->getUrl() );
|
||||||
}
|
}
|
||||||
|
|
||||||
$group = null;
|
$group = null;
|
||||||
@@ -455,4 +455,8 @@ class RouterBase {
|
|||||||
return self::$instance;
|
return self::$instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function reset() {
|
||||||
|
self::$instance = null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'Dummy/DummyMiddleware.php';
|
||||||
|
require_once 'Dummy/DummyController.php';
|
||||||
|
|
||||||
|
class GroupTest extends PHPUnit_Framework_TestCase {
|
||||||
|
|
||||||
|
protected $result;
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
// Initial setup
|
||||||
|
$_SERVER['HTTP_HOST'] = 'example.com';
|
||||||
|
$_SERVER['REQUEST_URI'] = '/api/v1/test';
|
||||||
|
$_SERVER['REQUEST_METHOD'] = 'get';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function group() {
|
||||||
|
$this->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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -16,15 +16,12 @@ class MiddlewareTest extends PHPUnit_Framework_TestCase {
|
|||||||
|
|
||||||
\Pecee\Http\Request::getInstance()->setMethod('get');
|
\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');
|
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start', ['middleware' => 'DummyMiddleware']);
|
||||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_GET));
|
|
||||||
$route->addSettings(['middleware' => 'DummyMiddleware']);
|
|
||||||
$router->addRoute($route);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$router->routeRequest();
|
\Pecee\SimpleRouter\SimpleRouter::start();
|
||||||
}catch(Exception $e) {
|
}catch(Exception $e) {
|
||||||
$this->assertTrue(($e instanceof MiddlewareLoadedException));
|
$this->assertTrue(($e instanceof MiddlewareLoadedException));
|
||||||
return;
|
return;
|
||||||
|
|||||||
+17
-30
@@ -13,60 +13,47 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testGet() {
|
public function testGet() {
|
||||||
|
|
||||||
|
\Pecee\SimpleRouter\RouterBase::reset();
|
||||||
|
|
||||||
\Pecee\Http\Request::getInstance()->setMethod('get');
|
\Pecee\Http\Request::getInstance()->setMethod('get');
|
||||||
|
|
||||||
$router = new \Pecee\SimpleRouter\RouterBase();
|
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');
|
||||||
|
\Pecee\SimpleRouter\SimpleRouter::start();
|
||||||
$route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start');
|
|
||||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_GET));
|
|
||||||
|
|
||||||
$router->addRoute($route);
|
|
||||||
$router->routeRequest();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPost() {
|
public function testPost() {
|
||||||
\Pecee\Http\Request::getInstance()->setMethod('post');
|
\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');
|
\Pecee\SimpleRouter\SimpleRouter::post('/my/test/url', 'DummyController@start');
|
||||||
|
\Pecee\SimpleRouter\SimpleRouter::start();
|
||||||
$route->addSettings(array());
|
|
||||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_POST));
|
|
||||||
|
|
||||||
$router->addRoute($route);
|
|
||||||
$router->routeRequest();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPut() {
|
public function testPut() {
|
||||||
\Pecee\Http\Request::getInstance()->setMethod('put');
|
\Pecee\Http\Request::getInstance()->setMethod('put');
|
||||||
|
|
||||||
$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_PUT));
|
|
||||||
|
|
||||||
$router->addRoute($route);
|
|
||||||
$router->routeRequest();
|
|
||||||
|
|
||||||
|
\Pecee\SimpleRouter\SimpleRouter::put('/my/test/url', 'DummyController@start');
|
||||||
|
\Pecee\SimpleRouter\SimpleRouter::start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDelete() {
|
public function testDelete() {
|
||||||
\Pecee\Http\Request::getInstance()->setMethod('delete');
|
\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');
|
\Pecee\SimpleRouter\SimpleRouter::delete('/my/test/url', 'DummyController@start');
|
||||||
$route->addSettings(array());
|
\Pecee\SimpleRouter\SimpleRouter::start();
|
||||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_DELETE));
|
|
||||||
|
|
||||||
$router->addRoute($route);
|
|
||||||
$router->routeRequest();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMethodNotAllowed() {
|
public function testMethodNotAllowed() {
|
||||||
|
|
||||||
|
\Pecee\SimpleRouter\RouterBase::reset();
|
||||||
|
|
||||||
\Pecee\Http\Request::getInstance()->setMethod('post');
|
\Pecee\Http\Request::getInstance()->setMethod('post');
|
||||||
|
|
||||||
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');
|
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');
|
||||||
|
|||||||
Reference in New Issue
Block a user