diff options
Diffstat (limited to 'tests/Unit/RouterTest.php')
| -rw-r--r-- | tests/Unit/RouterTest.php | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/Unit/RouterTest.php b/tests/Unit/RouterTest.php index 5b11caf..ef3134d 100644 --- a/tests/Unit/RouterTest.php +++ b/tests/Unit/RouterTest.php @@ -304,3 +304,39 @@ it('throws when generating route with non string parameter from name', function $router->route('test', ['test1' => 123]); })->throws(InvalidArgumentException::class); + +it('builds routes in groups', function () { + $router = new Router(); + + $router + ->prefix('/group1/') + ->name('group1.') + ->group(function ($group) use (&$r1, &$r2) { + $r1 = $group->get('/test1', fn () => null)->name('test1')->getRoute(); + + $group + ->prefix('/group2') + ->name('group2.') + ->group(function ($group) use (&$r2){ + $r2 = $group->get('test2', fn () => null)->name('test2')->getRoute(); + }); + }); + + $router + ->name('no-prefix.') + ->group(function ($group) use (&$r3) { + $r3 = $group->post('/test3', fn () => null)->name('test3')->getRoute(); + }); + + $r4 = $router->put('/test4', fn () => null)->name('test4')->getRoute(); + + expect($router->findRoute(HttpMethod::Get, '/group1/test1')->route)->toBe($r1); + expect($router->findRoute(HttpMethod::Get, '/group1/group2/test2')->route)->toBe($r2); + expect($router->findRoute(HttpMethod::Post, '/test3')->route)->toBe($r3); + expect($router->findRoute(HttpMethod::Put, '/test4')->route)->toBe($r4); + + expect($router->getNamedRoute('group1.test1'))->toBe($r1); + expect($router->getNamedRoute('group1.group2.test2'))->toBe($r2); + expect($router->getNamedRoute('no-prefix.test3'))->toBe($r3); + expect($router->getNamedRoute('test4'))->toBe($r4); +}); |
