summaryrefslogtreecommitdiff
path: root/tests/Unit/RouterTest.php
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2026-06-10 19:00:33 +0100
committerSam Light <sam@lightscale.co.uk>2026-06-10 19:00:33 +0100
commit3ccbdb7afd95972fbfdb797601acaedd467663a4 (patch)
tree6e6a8e021f42e82cfb63c64f2c3759d8bcdcbaf3 /tests/Unit/RouterTest.php
parent7d76684ad6cd0182545489d7ed54ae9823d94ffa (diff)
testing of the full group routes
Diffstat (limited to 'tests/Unit/RouterTest.php')
-rw-r--r--tests/Unit/RouterTest.php36
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);
+});