diff --git a/resources/js/Pages/Keys.vue b/resources/js/Pages/Keys.vue
index f8b3807..647c2e0 100644
--- a/resources/js/Pages/Keys.vue
+++ b/resources/js/Pages/Keys.vue
@@ -27,7 +27,7 @@
scope="col"
class="py-3 px-4 text-xs font-semibold tracking-wider text-left text-gray-500 uppercase whitespace-nowrap"
>
- Nazwa
+ Klucz
count(10)->create();
+ $user = User::factory()->create();
+
+ $this->assertDatabaseCount("keys", 10);
+
+ $this->actingAs($user)
+ ->get("/keys")
+ ->assertOk()
+ ->assertInertia(
+ fn(Assert $page) => $page
+ ->component("Keys")
+ ->has("keys.data", 10),
+ );
+ }
+
+ public function testAdminCanCreateKey(): void
+ {
+ $admin = User::factory()->admin()->create();
+
+ $this->assertDatabaseMissing("keys", [
+ "user_id" => $admin->id,
+ ]);
+
+ $this->actingAs($admin)
+ ->post("/keys")
+ ->assertSessionHasNoErrors()
+ ->assertRedirect();
+
+ $this->assertDatabaseHas("keys", [
+ "user_id" => $admin->id,
+ ]);
+ }
+
+ public function testUserCannotCreateKey(): void
+ {
+ $user = User::factory()->create();
+
+ $this->actingAs($user)
+ ->post("/keys")
+ ->assertForbidden();
+ }
+
+ public function testAdminCanDeleteKey(): void
+ {
+ $admin = User::factory()->admin()->create();
+
+ $key = Key::factory()->create();
+
+ $this->actingAs($admin)
+ ->delete("/keys/{$key->id}")
+ ->assertRedirect();
+ }
+
+ public function testUserCanTakeKeyFromAnotherUser(): void
+ {
+ $user = User::factory()->create();
+ $userWithKey = User::factory()->create();
+
+ $key = Key::factory()->for($userWithKey)->create();
+
+ $this->assertDatabaseHas("keys", [
+ "id" => $key->id,
+ "user_id" => $userWithKey->id,
+ ]);
+
+ $this->actingAs($user)
+ ->post("/keys/{$key->id}/take")
+ ->assertRedirect();
+
+ $this->assertDatabaseHas("keys", [
+ "id" => $key->id,
+ "user_id" => $user->id,
+ ]);
+ }
+
+ public function testUserCanGiveTheirKeyToAnotherUser(): void
+ {
+ $userWithKey = User::factory()->create();
+ $user = User::factory()->create();
+
+ $key = Key::factory()->for($userWithKey)->create();
+
+ $this->assertDatabaseHas("keys", [
+ "id" => $key->id,
+ "user_id" => $userWithKey->id,
+ ]);
+
+ $this->actingAs($userWithKey)
+ ->post("/keys/{$key->id}/give", [
+ "user" => $user->id,
+ ])
+ ->assertSessionhasNoErrors()
+ ->assertRedirect();
+
+ $this->assertDatabaseHas("keys", [
+ "id" => $key->id,
+ "user_id" => $user->id,
+ ]);
+ }
+}
|