diff options
| author | Brett Parson <brett@brett-parson.com> | 2026-08-21 13:55:37 -0500 |
|---|---|---|
| committer | Brett Parson <brett@brett-parson.com> | 2026-08-21 14:00:11 -0500 |
| commit | d039a5d62a9ac6ababae70d9d96422ca59f2b2d4 (patch) | |
| tree | f0db4750a571e8040a5da02cc7190079c0d62914 /tests/RouteLoaderTest.php | |
| parent | 0de77a6334cee1f6e15f7e0fd35602514560be33 (diff) | |
| download | miniroute-d039a5d62a9ac6ababae70d9d96422ca59f2b2d4.tar.gz miniroute-d039a5d62a9ac6ababae70d9d96422ca59f2b2d4.zip | |
Scaffold miniroute routing/middleware kernel
Diffstat (limited to 'tests/RouteLoaderTest.php')
| -rw-r--r-- | tests/RouteLoaderTest.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/RouteLoaderTest.php b/tests/RouteLoaderTest.php new file mode 100644 index 0000000..c20f58b --- /dev/null +++ b/tests/RouteLoaderTest.php @@ -0,0 +1,57 @@ +<?php + +declare(strict_types=1); + +namespace BrettParson\MiniRoute\Tests; + +use BrettParson\MiniRoute\Routing\RouteLoader; +use BrettParson\MiniRoute\Tests\Fixtures\ClassLevelController; +use BrettParson\MiniRoute\Tests\Fixtures\FakeController; +use BrettParson\MiniRoute\Tests\Fixtures\FakeMiddleware; +use PHPUnit\Framework\TestCase; + +final class RouteLoaderTest extends TestCase +{ + public function testLoadsRouteAttributesFromControllerMethods(): void + { + $routes = (new RouteLoader())->load(FakeController::class); + + $indexed = []; + + foreach ($routes as $route) { + $indexed[$route->method . ' ' . $route->path] = $route; + } + + $this->assertCount(3, $routes); + + $this->assertSame('GET', $indexed['GET /entries']->method); + $this->assertSame('index', $indexed['GET /entries']->controllerMethod); + $this->assertSame([], $indexed['GET /entries']->middleware); + + $this->assertSame('show', $indexed['GET /entries/{slug}']->controllerMethod); + } + + public function testMethodMiddlewareIsAttached(): void + { + $routes = (new RouteLoader())->load(FakeController::class); + + $post = null; + + foreach ($routes as $route) { + if ($route->method === 'POST') { + $post = $route; + } + } + + $this->assertNotNull($post); + $this->assertSame([FakeMiddleware::class], $post->middleware); + } + + public function testClassLevelMiddlewareIsInheritedByMethods(): void + { + $routes = (new RouteLoader())->load(ClassLevelController::class); + + $this->assertCount(1, $routes); + $this->assertSame([FakeMiddleware::class], $routes[0]->middleware); + } +} |
