summaryrefslogtreecommitdiff
path: root/tests/Unit/RouterTest.php
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2026-06-10 19:00:32 +0100
committerSam Light <sam@lightscale.co.uk>2026-06-10 19:00:32 +0100
commitac836311005458a10dded324420be92f44976332 (patch)
treef456556ceac141aaaeeb0093c4438a44b99e7148 /tests/Unit/RouterTest.php
parentc762531c8679dbb800346174913bfa21917ac0b5 (diff)
generating routes with parameters and tests
Diffstat (limited to 'tests/Unit/RouterTest.php')
-rw-r--r--tests/Unit/RouterTest.php32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/Unit/RouterTest.php b/tests/Unit/RouterTest.php
index d55fbd2..497772d 100644
--- a/tests/Unit/RouterTest.php
+++ b/tests/Unit/RouterTest.php
@@ -6,6 +6,7 @@ use Lightscale\Router\BasicStrategy;
use Lightscale\Router\Contracts\Strategy;
use Lightscale\Router\Enums\HttpMethod;
use Lightscale\Router\Enums\PathSegmentType;
+use Lightscale\Router\Exceptions\MissingParameterException;
use Lightscale\Router\PathSegment;
use Lightscale\Router\Route;
use Lightscale\Router\RouteCall;
@@ -208,6 +209,15 @@ it('make a route', function () {
->toBeInstanceOf(RouteMatch::class);
});
+it('make a route with parameter', function() {
+ $router = new Router();
+ $router->make(HttpMethod::Get, '/test/{test1}/hello', fn() => null);
+
+ expect($router->findSegment('/test/hello'))
+ ->not->toBeNull()
+ ->parameters->toBe(['test1' => 'hello']);
+});
+
it('makes a get route', function () {
$router = new Router();
$router->get('/test1/test2', fn () => null);
@@ -278,3 +288,25 @@ it('generates route from name', function() {
expect($router->route('test'))->toBe('/test');
});
+it('generates route with parameters from name', function() {
+ $router = new Router();
+ $router->get('/test/{test1}/hello', fn() => null)->name('test');
+
+ expect($router->route('test', [
+ 'test1' => 'world'
+ ]))->toBe('/test/world/hello');
+});
+
+it('throws when generating route with missing parameter from name', function() {
+ $router = new Router();
+ $router->get('/test/{test1}/hello', fn() => null)->name('test');
+
+ $router->route('test', []);
+})->throws(MissingParameterException::class);
+
+it('throws when generating route with non string parameter from name', function() {
+ $router = new Router();
+ $router->get('/test/{test1}/hello', fn() => null)->name('test');
+
+ $router->route('test', ['test1' => 123]);
+})->throws(InvalidArgumentException::class);