create(); $this->actingAs($user); $response = $this->get('/profile'); $response ->assertOk() ->assertSeeVolt('profile.update-profile-information-form') ->assertSeeVolt('profile.update-password-form') ->assertSeeVolt('profile.delete-user-form'); }); test('profile information can be updated', function () { $user = User::factory()->create(); $this->actingAs($user); $component = Volt::test('profile.update-profile-information-form') ->set('name', 'Test User') ->set('email', 'test@example.com') ->call('updateProfileInformation'); $component ->assertHasNoErrors() ->assertNoRedirect(); $user->refresh(); $this->assertSame('Test User', $user->name); $this->assertSame('test@example.com', $user->email); $this->assertNull($user->email_verified_at); }); test('email verification status is unchanged when the email address is unchanged', function () { $user = User::factory()->create(); $this->actingAs($user); $component = Volt::test('profile.update-profile-information-form') ->set('name', 'Test User') ->set('email', $user->email) ->call('updateProfileInformation'); $component ->assertHasNoErrors() ->assertNoRedirect(); $this->assertNotNull($user->refresh()->email_verified_at); }); test('user can delete their account', function () { $user = User::factory()->create(); $userId = $user->id; $this->actingAs($user); $component = Volt::test('profile.delete-user-form') ->set('password', 'password') ->call('deleteUser'); $component ->assertHasNoErrors() ->assertRedirect('/'); $this->assertGuest(); // Lernschiff uses SoftDeletes — user record is soft-deleted (deleted_at is set). $deletedUser = User::withoutGlobalScope(TenantScope::class)->withTrashed()->find($userId); $this->assertNotNull($deletedUser, 'User record should still exist (soft-deleted)'); $this->assertNotNull($deletedUser->deleted_at, 'User should be soft-deleted (deleted_at not null)'); }); test('correct password must be provided to delete account', function () { $user = User::factory()->create(); $this->actingAs($user); $component = Volt::test('profile.delete-user-form') ->set('password', 'wrong-password') ->call('deleteUser'); $component ->assertHasErrors('password') ->assertNoRedirect(); $this->assertNotNull($user->fresh()); });