create(); $admin->is_admin = true; $admin->save(); return $admin; } public function test_regular_user_cannot_access_exercise_admin(): void { $user = User::factory()->create(); $response = $this->actingAs($user)->get(route('admin.exercises.index')); $response->assertForbidden(); } public function test_admin_can_create_an_exercise(): void { $response = $this->actingAs($this->admin())->post(route('admin.exercises.store'), [ 'name' => 'Barbell Deadlift', 'gif_url' => 'https://example.com/deadlift.gif', 'instructions' => 'Lift the bar.', ]); $response->assertRedirect(route('admin.exercises.index')); $this->assertDatabaseHas('exercises', [ 'name' => 'Barbell Deadlift', 'slug' => 'barbell-deadlift', ]); } public function test_admin_can_update_an_exercise(): void { $exercise = Exercise::factory()->create(['name' => 'Old Name']); $response = $this->actingAs($this->admin())->patch(route('admin.exercises.update', $exercise), [ 'name' => 'New Name', 'gif_url' => $exercise->gif_url, 'instructions' => $exercise->instructions, ]); $response->assertRedirect(route('admin.exercises.index')); $this->assertDatabaseHas('exercises', [ 'id' => $exercise->id, 'name' => 'New Name', ]); } public function test_admin_can_delete_an_exercise(): void { $exercise = Exercise::factory()->create(); $response = $this->actingAs($this->admin())->delete(route('admin.exercises.destroy', $exercise)); $response->assertRedirect(route('admin.exercises.index')); $this->assertDatabaseMissing('exercises', ['id' => $exercise->id]); } }