home-erp

git clone git://archive.git.mtrnord.blog/MTRNord/home-erp.git
Log | Files | Refs | README

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 }