fix(profile): close the email change modal after verification

A merge (253e59e73) lost the close-email-change-modal dispatch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2026-09-28 10:13:20 +02:00
co-authored by Claude Opus 5.5
parent 75976d9882
commit 9c6a8e4767
2 changed files with 41 additions and 0 deletions
+1
View File
@@ -222,6 +222,7 @@ class Index extends Component
$this->show_verification = false;
$this->dispatch('success', 'Email address updated successfully.');
$this->dispatch('close-email-change-modal');
auditLog('ui.user.email_changed', $this->auditContext());
} else {
$this->dispatch('error', 'Failed to update email address.');
@@ -0,0 +1,40 @@
<?php
use App\Livewire\Profile\Index as ProfileIndex;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
uses(RefreshDatabase::class);
beforeEach(function () {
$this->user = User::factory()->create(['name' => 'Profile User', 'email' => 'old@example.com']);
$this->user->forceFill([
'pending_email' => 'new@example.com',
'email_change_code' => '123456',
'email_change_code_expires_at' => now()->addMinutes(10),
])->save();
$this->actingAs($this->user);
});
it('closes the email change modal after a successful verification', function () {
Livewire::test(ProfileIndex::class)
->set('email_verification_code', '123456')
->call('verifyEmailChange')
->assertDispatched('success', 'Email address updated successfully.')
->assertDispatched('close-email-change-modal')
->assertSet('show_verification', false);
expect($this->user->fresh()->email)->toBe('new@example.com');
});
it('keeps the email change modal open when the verification code is wrong', function () {
Livewire::test(ProfileIndex::class)
->set('email_verification_code', '654321')
->call('verifyEmailChange')
->assertDispatched('error', 'Invalid or expired verification code.')
->assertNotDispatched('close-email-change-modal');
expect($this->user->fresh()->email)->toBe('old@example.com');
});