From b7f5d315445727729cb09b41a02e0c02f8784f2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Thu, 17 Aug 2017 23:31:27 +0100 Subject: [PATCH] Fixed double `/` when calling `findUrl` on routes with the first parameter optional. --- src/Pecee/SimpleRouter/Route/LoadableRoute.php | 1 + test/RouterUrlTest.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Pecee/SimpleRouter/Route/LoadableRoute.php b/src/Pecee/SimpleRouter/Route/LoadableRoute.php index 8c16247..421f863 100644 --- a/src/Pecee/SimpleRouter/Route/LoadableRoute.php +++ b/src/Pecee/SimpleRouter/Route/LoadableRoute.php @@ -144,6 +144,7 @@ abstract class LoadableRoute extends Route implements ILoadableRoute } } + $url = '/' . ltrim($url, '/'); $url .= join('/', $unknownParams); return rtrim($url, '/') . '/'; diff --git a/test/RouterUrlTest.php b/test/RouterUrlTest.php index 7135b22..4ea583c 100644 --- a/test/RouterUrlTest.php +++ b/test/RouterUrlTest.php @@ -28,6 +28,21 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase TestRouter::router()->reset(); } + public function testUnicodeCharacters() + { + // Test spanish characters + TestRouter::get('/cursos/listado/{listado?}/{category?}', 'DummyController@method1', ['defaultParameterRegex' => '[\w\p{L}\s-]+']); + TestRouter::debugNoReset('/cursos/listado/especialidad/cirugía local', 'get'); + $this->assertEquals('/cursos/listado/{listado?}/{category?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); + + // Test danish characters + TestRouter::get('/kategori/økse', 'DummyController@method1', ['defaultParameterRegex' => '[\w\ø]+']); + TestRouter::debugNoReset('/kategori/økse', 'get'); + $this->assertEquals('/kategori/økse/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); + + TestRouter::router()->reset(); + } + public function testOptionalParameters() { TestRouter::get('/aviso/legal', 'DummyController@method1');