123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace Tests\Feature;
- use App\Models\User;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Livewire\Volt\Volt;
- use Tests\TestCase;
- class ProfileTest extends TestCase
- {
- use RefreshDatabase;
- public function test_profile_page_is_displayed(): void
- {
- $user = User::factory()->create();
- $response = $this->actingAs($user)->get('/profile');
- $response
- ->assertOk()
- ->assertSeeVolt('profile.update-profile-information-form')
- ->assertSeeVolt('profile.update-password-form')
- ->assertSeeVolt('profile.delete-user-form');
- }
- public function test_profile_information_can_be_updated(): void
- {
- $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);
- }
- public function test_email_verification_status_is_unchanged_when_the_email_address_is_unchanged(): void
- {
- $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);
- }
- public function test_user_can_delete_their_account(): void
- {
- $user = User::factory()->create();
- $this->actingAs($user);
- $component = Volt::test('profile.delete-user-form')
- ->set('password', 'password')
- ->call('deleteUser');
- $component
- ->assertHasNoErrors()
- ->assertRedirect('/');
- $this->assertGuest();
- $this->assertNull($user->fresh());
- }
- public function test_correct_password_must_be_provided_to_delete_account(): void
- {
- $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());
- }
- }
|