diff options
Diffstat (limited to 'tests/Unit/RouterTest.php')
| -rw-r--r-- | tests/Unit/RouterTest.php | 32 |
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); |
