From 491c640becd7078256cc6a5d69eedc7c7eab21b7 Mon Sep 17 00:00:00 2001 From: Nicollas Date: Mon, 9 Aug 2021 22:19:29 -0300 Subject: [PATCH] Fix withoutMiddleware method --- .../Middlewares/MiddlewareCollection.php | 5 ++- src/Router/RouteManager.php | 3 ++ src/Traits/RouteManagerUtils.php | 6 ++-- tests/RouteGroupsTest.php | 31 +++++++++++++++++++ 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/Router/Middlewares/MiddlewareCollection.php b/src/Router/Middlewares/MiddlewareCollection.php index 66678fc..dcdeda8 100644 --- a/src/Router/Middlewares/MiddlewareCollection.php +++ b/src/Router/Middlewares/MiddlewareCollection.php @@ -103,9 +103,8 @@ public function removeMiddleware($middleware) * * @param array $middleware * - * @return string|array */ - private function destroyMiddleware(Array $middleware) + private function destroyMiddleware(Array $middleware): void { $currentMiddleware = $this->middlewares; @@ -119,7 +118,7 @@ private function destroyMiddleware(Array $middleware) } } - return $currentMiddleware; + $this->middlewares = $currentMiddleware; } /** diff --git a/src/Router/RouteManager.php b/src/Router/RouteManager.php index 6f42db7..120265c 100644 --- a/src/Router/RouteManager.php +++ b/src/Router/RouteManager.php @@ -36,6 +36,9 @@ class RouteManager /** @var string */ protected $separator; + + /** @var object */ + protected $middleware; /** @var array */ protected $where = []; diff --git a/src/Traits/RouteManagerUtils.php b/src/Traits/RouteManagerUtils.php index 2ccd96c..0260f55 100644 --- a/src/Traits/RouteManagerUtils.php +++ b/src/Traits/RouteManagerUtils.php @@ -6,9 +6,6 @@ trait RouteManagerUtils { - /** @var object */ - protected $middleware; - public abstract function getDefaultName(); public abstract function setName(String $name); public abstract function setWhereData(String $key, String $value); @@ -133,6 +130,9 @@ public function withoutMiddleware($middleware) return; } + $this->middleware = clone $this->middleware; $this->middleware->removeMiddleware($middleware); + + return $this; } } \ No newline at end of file diff --git a/tests/RouteGroupsTest.php b/tests/RouteGroupsTest.php index 3144371..91110f9 100644 --- a/tests/RouteGroupsTest.php +++ b/tests/RouteGroupsTest.php @@ -100,4 +100,35 @@ public function check_names_and_that_all_routes_within_the_group_have_an_instanc } }); } + + /** + * @test + */ + public function check_if_all_routes_have_group_middleware() + { + Route::middleware("isLogged") + ->namespace("App\Http\Controllers") + ->prefix("user") + ->name("user.") + ->group(function() { + $routes = [ + Route::get("/", ["User", "index"])->name("index"), + Route::put("/settings", ["User", "updateSettings"])->name("updateSettings"), + Route::get("/settings", ["User", "settings"])->name("settings"), + Route::get("/logout", ["User", "logout"])->name("logout") + ]; + + $routeWithoutMiddleware = Route::get("/{id}/profile", ["User", "profile"]) + ->name("profile") + ->withoutMiddleware("isLogged"); + + foreach ($routes as $route) { + $routeMiddleware = $route->getMiddleware(); + + $this->assertEquals("isLogged", $routeMiddleware->get()); + } + + $this->assertEquals("", $routeWithoutMiddleware->getMiddleware()->get()); + }); + } }