2024-01-09 15:38:12 +00:00
|
|
|
import factory from 'factoria'
|
|
|
|
import { expect, it } from 'vitest'
|
2024-01-18 11:13:05 +00:00
|
|
|
import { screen } from '@testing-library/vue'
|
2024-01-09 15:38:12 +00:00
|
|
|
import UnitTestCase from '@/__tests__/UnitTestCase'
|
2024-01-18 11:13:05 +00:00
|
|
|
import { authService } from '@/services'
|
2024-01-09 15:38:12 +00:00
|
|
|
import { MessageToasterStub } from '@/__tests__/stubs'
|
|
|
|
import ProfileForm from './ProfileForm.vue'
|
|
|
|
|
|
|
|
new class extends UnitTestCase {
|
|
|
|
private async renderComponent (user: User) {
|
2024-01-15 22:26:50 +00:00
|
|
|
return this.be(user).render(ProfileForm)
|
2024-01-09 15:38:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
protected test () {
|
|
|
|
it('updates profile', async () => {
|
2024-01-18 11:13:05 +00:00
|
|
|
const updateMock = this.mock(authService, 'updateProfile')
|
2024-01-09 15:38:12 +00:00
|
|
|
const alertMock = this.mock(MessageToasterStub.value, 'success')
|
|
|
|
|
|
|
|
await this.renderComponent(factory<User>('user'))
|
|
|
|
|
|
|
|
await this.type(screen.getByTestId('currentPassword'), 'old-password')
|
|
|
|
await this.type(screen.getByTestId('email'), 'koel@example.com')
|
|
|
|
await this.type(screen.getByTestId('name'), 'Koel User')
|
|
|
|
await this.type(screen.getByTestId('newPassword'), 'new-password')
|
|
|
|
await this.user.click(screen.getByRole('button', { name: 'Save' }))
|
|
|
|
|
|
|
|
expect(updateMock).toHaveBeenCalledWith({
|
|
|
|
name: 'Koel User',
|
|
|
|
email: 'koel@example.com',
|
|
|
|
current_password: 'old-password',
|
|
|
|
new_password: 'new-password',
|
|
|
|
})
|
|
|
|
|
|
|
|
expect(alertMock).toHaveBeenCalledWith('Profile updated.')
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|