hidden()->create(); $this->get(route('personalia.index'))->assertRedirect(route('login')); $this->get(route('personalia.create'))->assertRedirect(route('login')); $this->post(route('personalia.store'), [])->assertRedirect(route('login')); $this->get(route('personalia.edit', $personalium))->assertRedirect(route('login')); $this->patch(route('personalia.update', $personalium), [])->assertRedirect(route('login')); $this->delete(route('personalia.destroy', $personalium))->assertRedirect(route('login')); }); test('an authenticated user can view the personalia overview', function () { $user = User::factory()->create(); $personalium = Personalia::factory()->hidden()->create(); $this->actingAs($user) ->get(route('personalia.index')) ->assertOk() ->assertViewIs('personalia.index') ->assertViewHas('personalia', fn ($personalia) => $personalia->contains($personalium)); }); test('an authenticated user can create visible personalia', function () { $user = User::factory()->create(); $response = $this->actingAs($user)->post(route('personalia.store'), [ 'key' => 'Website', 'value' => 'https://example.com', 'icon' => 'fa-solid fa-globe', ]); $response ->assertSessionHasNoErrors() ->assertRedirect(route('personalia.index')); $this->assertDatabaseHas('personalia', [ 'key' => 'Website', 'value' => 'https://example.com', 'hidden' => false, 'icon' => 'fa-solid fa-globe', ]); }); test('an authenticated user can create hidden personalia', function () { $user = User::factory()->create(); $response = $this->actingAs($user)->post(route('personalia.store'), [ 'key' => 'Telefoon', 'value' => '+31612345678', 'hidden' => '1', 'icon' => 'fa-solid fa-phone', ]); $response ->assertSessionHasNoErrors() ->assertRedirect(route('personalia.index')); $this->assertDatabaseHas('personalia', [ 'key' => 'Telefoon', 'value' => '+31612345678', 'hidden' => true, 'icon' => 'fa-solid fa-phone', ]); }); test('an authenticated user can update personalia', function () { $user = User::factory()->create(); $personalium = Personalia::factory()->hidden()->create([ 'key' => 'Email', 'value' => 'old@example.com', 'icon' => 'fa-solid fa-envelope', ]); $response = $this->actingAs($user)->patch(route('personalia.update', $personalium), [ 'key' => 'Email', 'value' => 'new@example.com', 'icon' => 'fa-regular fa-envelope', ]); $response ->assertSessionHasNoErrors() ->assertRedirect(route('personalia.index')); $personalium->refresh(); expect($personalium->value)->toBe('new@example.com'); expect($personalium->hidden)->toBeFalse(); expect($personalium->icon)->toBe('fa-regular fa-envelope'); }); test('an authenticated user can delete personalia', function () { $user = User::factory()->create(); $personalium = Personalia::factory()->hidden()->create(); $this->actingAs($user) ->delete(route('personalia.destroy', $personalium)) ->assertRedirect(route('personalia.index')); $this->assertDatabaseMissing('personalia', ['id' => $personalium->id]); });