refactor: remove email verification reset on profile update and add feature tests for profile settings
This commit is contained in:
parent
1d2e25e57f
commit
00586e168f
@ -40,10 +40,6 @@ public function update(ProfileUpdateRequest $request): RedirectResponse
|
||||
'email' => $validated['email'],
|
||||
]);
|
||||
|
||||
if ($user->isDirty('email')) {
|
||||
$user->email_verified_at = null;
|
||||
}
|
||||
|
||||
$user->save();
|
||||
|
||||
$user->profile()->update([
|
||||
|
||||
116
tests/Feature/Settings/ProfileTest.php
Normal file
116
tests/Feature/Settings/ProfileTest.php
Normal file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
use function Pest\Laravel\actingAs;
|
||||
use function Pest\Laravel\assertDatabaseHas;
|
||||
use function Pest\Laravel\assertGuest;
|
||||
use function Pest\Laravel\assertSoftDeleted;
|
||||
use function Pest\Laravel\delete;
|
||||
use function Pest\Laravel\get;
|
||||
use function Pest\Laravel\patch;
|
||||
use function Pest\Laravel\put;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Profile Settings Module Tests
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
describe('Profile Settings Module - Authorization', function () {
|
||||
it('redirects to login when accessing profile settings unauthenticated', function () {
|
||||
get(route('profile.edit'))->assertRedirect(route('login'));
|
||||
get(route('security.edit'))->assertRedirect(route('login'));
|
||||
get(route('appearance.edit'))->assertRedirect(route('login'));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Profile Settings Module - Actions', function () {
|
||||
beforeEach(function () {
|
||||
$this->user = User::factory()->create();
|
||||
actingAs($this->user);
|
||||
});
|
||||
|
||||
it('can access profile edit page', function () {
|
||||
get(route('profile.edit'))
|
||||
->assertOk()
|
||||
->assertInertia(fn ($page) => $page
|
||||
->component('settings/profile')
|
||||
);
|
||||
});
|
||||
|
||||
it('can update profile information', function () {
|
||||
$newData = [
|
||||
'username' => 'newusername',
|
||||
'email' => 'newemail@example.com',
|
||||
'nik' => '1234567890123456',
|
||||
'full_name' => 'New Full Name',
|
||||
'phone_number' => '081234567890',
|
||||
'address' => 'New Address',
|
||||
'birth_place' => 'New City',
|
||||
'birth_date' => '1990-01-01',
|
||||
];
|
||||
|
||||
patch(route('profile.update'), $newData)
|
||||
->assertRedirect(route('profile.edit'))
|
||||
->assertSessionHas('success');
|
||||
|
||||
assertDatabaseHas('users', [
|
||||
'id' => $this->user->id,
|
||||
'username' => 'newusername',
|
||||
'email' => 'newemail@example.com',
|
||||
]);
|
||||
|
||||
assertDatabaseHas('user_profiles', [
|
||||
'user_id' => $this->user->id,
|
||||
'nik' => '1234567890123456',
|
||||
'full_name' => 'New Full Name',
|
||||
]);
|
||||
});
|
||||
|
||||
it('can delete profile', function () {
|
||||
delete(route('profile.destroy'), [
|
||||
'password' => 'password',
|
||||
])->assertRedirect('/');
|
||||
|
||||
assertGuest();
|
||||
assertSoftDeleted('users', ['id' => $this->user->id]);
|
||||
});
|
||||
|
||||
it('can access security edit page', function () {
|
||||
get(route('security.edit'))
|
||||
->assertOk()
|
||||
->assertInertia(fn ($page) => $page
|
||||
->component('settings/security')
|
||||
);
|
||||
});
|
||||
|
||||
it('can update password', function () {
|
||||
$response = put(route('user-password.update'), [
|
||||
'current_password' => 'password', // Default factory password
|
||||
'password' => 'newpassword123',
|
||||
'password_confirmation' => 'newpassword123',
|
||||
]);
|
||||
|
||||
$response->assertRedirect();
|
||||
|
||||
expect(Hash::check('newpassword123', $this->user->fresh()->password))->toBeTrue();
|
||||
});
|
||||
|
||||
it('validates password update', function () {
|
||||
put(route('user-password.update'), [
|
||||
'current_password' => 'wrongpassword',
|
||||
'password' => 'newpassword123',
|
||||
'password_confirmation' => 'newpassword123',
|
||||
])->assertSessionHasErrors(['current_password']);
|
||||
});
|
||||
|
||||
it('can access appearance page', function () {
|
||||
get(route('appearance.edit'))
|
||||
->assertOk()
|
||||
->assertInertia(fn ($page) => $page
|
||||
->component('settings/appearance')
|
||||
);
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user