From 47420a802a5294b44beef5095e019214269f8923 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Jun 2024 14:02:04 +0100 Subject: [PATCH] More (failing) tests Signed-off-by: snipe --- tests/Feature/Users/Ui/DeleteUserTest.php | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tests/Feature/Users/Ui/DeleteUserTest.php b/tests/Feature/Users/Ui/DeleteUserTest.php index a3bb7364bd..ad4f7f282a 100644 --- a/tests/Feature/Users/Ui/DeleteUserTest.php +++ b/tests/Feature/Users/Ui/DeleteUserTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Users\Ui; +use App\Models\LicenseSeat; use App\Models\Location; use App\Models\User; use Tests\TestCase; @@ -40,6 +41,37 @@ class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } + public function testDisallowUserDeletionIfStillHaveAccessories() + { + $user = User::factory()->create(); + Accessory::factory()->count(3)->create(['assigned_to' => $user->id]); + + $this->actingAs(User::factory()->deleteUsers()->create())->assertFalse($user->isDeletable()); + + $response = $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create()) + ->delete(route('users.destroy', $user->id)) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Error'); + } + + public function testDisallowUserDeletionIfStillHaveLicenses() + { + $user = User::factory()->create(); + LicenseSeat::factory()->count(3)->create(['assigned_to' => $user->id]); + + $this->actingAs(User::factory()->deleteUsers()->create())->assertFalse($user->isDeletable()); + + $response = $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create()) + ->delete(route('users.destroy', $user->id)) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Error'); + } + + public function testAllowUserDeletionIfNotManagingLocations() { $manager = User::factory()->create(); @@ -61,5 +93,18 @@ class DeleteUserTest extends TestCase $this->actingAs(User::factory()->editUsers()->create())->assertFalse($manager->isDeletable()); } + public function testUsersCannotDeleteThemselves() + { + $manager = User::factory()->deleteUsers()->create(); + $this->actingAs(User::factory()->deleteUsers()->create())->assertTrue($manager->isDeletable()); + + $response = $this->actingAs($manager) + ->delete(route('users.destroy', $manager->id)) + ->assertStatus(302) + ->assertRedirect(route('users.index')); + + $this->followRedirects($response)->assertSee('Error'); + } + }