ProfileTest.php (2792B)
1 <?php 2 3 namespace Tests\Feature; 4 5 use App\Models\User; 6 use Illuminate\Foundation\Testing\RefreshDatabase; 7 use Livewire\Volt\Volt; 8 use Tests\TestCase; 9 10 class ProfileTest extends TestCase 11 { 12 use RefreshDatabase; 13 14 public function test_profile_page_is_displayed(): void 15 { 16 $user = User::factory()->create(); 17 18 $response = $this->actingAs($user)->get('/profile'); 19 20 $response 21 ->assertSeeVolt('profile.update-profile-information-form') 22 ->assertSeeVolt('profile.update-password-form') 23 ->assertSeeVolt('profile.delete-user-form') 24 ->assertSeeVolt('profile.api-tokens') 25 ->assertOk(); 26 } 27 28 public function test_profile_information_can_be_updated(): void 29 { 30 $user = User::factory()->create(); 31 32 $this->actingAs($user); 33 34 $component = Volt::test('profile.update-profile-information-form') 35 ->set('name', 'Test User') 36 ->set('email', 'test@example.com') 37 ->call('updateProfileInformation'); 38 39 $component 40 ->assertHasNoErrors() 41 ->assertNoRedirect(); 42 43 $user->refresh(); 44 45 $this->assertSame('Test User', $user->name); 46 $this->assertSame('test@example.com', $user->email); 47 $this->assertNull($user->email_verified_at); 48 } 49 50 public function test_email_verification_status_is_unchanged_when_the_email_address_is_unchanged(): void 51 { 52 $user = User::factory()->create(); 53 54 $this->actingAs($user); 55 56 $component = Volt::test('profile.update-profile-information-form') 57 ->set('name', 'Test User') 58 ->set('email', $user->email) 59 ->call('updateProfileInformation'); 60 61 $component 62 ->assertHasNoErrors() 63 ->assertNoRedirect(); 64 65 $this->assertNotNull($user->refresh()->email_verified_at); 66 } 67 68 public function test_user_can_delete_their_account(): void 69 { 70 $user = User::factory()->create(); 71 72 $this->actingAs($user); 73 74 $component = Volt::test('profile.delete-user-form') 75 ->set('password', 'password') 76 ->call('deleteUser'); 77 78 $component 79 ->assertHasNoErrors() 80 ->assertRedirect('/'); 81 82 $this->assertGuest(); 83 $this->assertNull($user->fresh()); 84 } 85 86 public function test_correct_password_must_be_provided_to_delete_account(): void 87 { 88 $user = User::factory()->create(); 89 90 $this->actingAs($user); 91 92 $component = Volt::test('profile.delete-user-form') 93 ->set('password', 'wrong-password') 94 ->call('deleteUser'); 95 96 $component 97 ->assertHasErrors('password') 98 ->assertNoRedirect(); 99 100 $this->assertNotNull($user->fresh()); 101 } 102 }