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); } }