Merge pull request #671 from skipperbent/v5-release

V5 release
This commit is contained in:
Simon Sessingø
2023-05-06 21:14:29 +02:00
committed by GitHub
5 changed files with 21 additions and 12 deletions
@@ -91,6 +91,7 @@ abstract class LoadableRoute extends Route implements ILoadableRoute
$parameters = array_fill_keys($matches[1], null); $parameters = array_fill_keys($matches[1], null);
} }
} }
$this->parameters = $parameters; $this->parameters = $parameters;
return $this; return $this;
@@ -68,15 +68,19 @@ class RouteResource extends LoadableRoute implements IControllerRoute
*/ */
public function findUrl(?string $method = null, $parameters = null, ?string $name = null): string public function findUrl(?string $method = null, $parameters = null, ?string $name = null): string
{ {
$url = parent::findUrl($method, $parameters, $name); $url = array_search($name, $this->names, true);
$action = array_search($name, $this->names, true); $parametersUrl = '';
if ($action !== false) { if ($parameters !== null && count($parameters) > 0) {
return $url . $this->urls[$action]; $parametersUrl = join('/', $parameters) . '/';
} }
return $url; if ($url !== false) {
return rtrim($this->url . $parametersUrl . $this->urls[$url], '/') . '/';
}
return $this->url . $parametersUrl;
} }
protected function call($method): bool protected function call($method): bool
@@ -63,20 +63,19 @@ class RouterResourceTest extends \PHPUnit\Framework\TestCase
$response = TestRouter::debugOutput('/resource/38', 'get'); $response = TestRouter::debugOutput('/resource/38', 'get');
$this->assertEquals('show 38', $response); $this->assertEquals('show 38', $response);
} }
public function testResourceUrls() public function testResourceUrls()
{ {
TestRouter::resource('/resource', 'ResourceController')->name('resource'); TestRouter::resource('/resource', 'ResourceController')->name('resource');
TestRouter::debugOutputNoReset('/resource'); TestRouter::debugNoReset('/resource');
$this->assertEquals('/resource/3/create/', TestRouter::router()->getUrl('resource.create', ['id' => 3])); $this->assertEquals('/resource/3/create/', TestRouter::router()->getUrl('resource.create', ['id' => 3]));
$this->assertEquals('/resource/3/edit/', TestRouter::router()->getUrl('resource.edit', ['id' => 3])); $this->assertEquals('/resource/5/edit/', TestRouter::router()->getUrl('resource.edit', ['id' => 5]));
$this->assertEquals('/resource/3/', TestRouter::router()->getUrl('resource.update', ['id' => 3])); $this->assertEquals('/resource/6/', TestRouter::router()->getUrl('resource.update', ['id' => 6]));
$this->assertEquals('/resource/3/', TestRouter::router()->getUrl('resource.destroy', ['id' => 3])); $this->assertEquals('/resource/9/', TestRouter::router()->getUrl('resource.destroy', ['id' => 9]));
$this->assertEquals('/resource/3/', TestRouter::router()->getUrl('resource.delete', ['id' => 3])); $this->assertEquals('/resource/12/', TestRouter::router()->getUrl('resource.delete', ['id' => 12]));
$this->assertEquals('/resource/', TestRouter::router()->getUrl('resource')); $this->assertEquals('/resource/', TestRouter::router()->getUrl('resource'));
TestRouter::router()->reset(); TestRouter::router()->reset();
+1 -1
View File
@@ -184,7 +184,7 @@ class RouterUrlTest extends \PHPUnit\Framework\TestCase
// Should match /?jackdaniels=true&cola=yeah // Should match /?jackdaniels=true&cola=yeah
$this->assertEquals('/?jackdaniels=true&cola=yeah', TestRouter::getUrl('home', null, ['jackdaniels' => 'true', 'cola' => 'yeah'])); $this->assertEquals('/?jackdaniels=true&cola=yeah', TestRouter::getUrl('home', null, ['jackdaniels' => 'true', 'cola' => 'yeah']));
TestRouter::router()->reset(); TestRouter::reset();
} }
+5
View File
@@ -8,6 +8,11 @@ class TestRouter extends \Pecee\SimpleRouter\SimpleRouter
static::request()->setHost('testhost.com'); static::request()->setHost('testhost.com');
} }
public static function reset(): void
{
static::$router = null;
}
public static function debugNoReset(string $testUrl, string $testMethod = 'get'): void public static function debugNoReset(string $testUrl, string $testMethod = 'get'): void
{ {
$request = static::request(); $request = static::request();