koel/resources/assets/js/components/profile-preferences/ProfileForm.spec.ts

41 lines
1.4 KiB
TypeScript
Raw Normal View History

import factory from 'factoria'
import { expect, it } from 'vitest'
2024-01-18 11:13:05 +00:00
import { screen } from '@testing-library/vue'
import UnitTestCase from '@/__tests__/UnitTestCase'
2024-01-18 11:13:05 +00:00
import { authService } from '@/services'
import { MessageToasterStub } from '@/__tests__/stubs'
import ProfileForm from './ProfileForm.vue'
new class extends UnitTestCase {
protected test () {
it('updates profile', async () => {
2024-01-18 11:13:05 +00:00
const updateMock = this.mock(authService, 'updateProfile')
const alertMock = this.mock(MessageToasterStub.value, 'success')
2024-03-19 22:48:12 +00:00
this.renderComponent(factory<User>('user', {
avatar: 'https://gravatar.com/foo'
}))
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',
2024-03-19 22:48:12 +00:00
avatar: 'https://gravatar.com/foo'
})
expect(alertMock).toHaveBeenCalledWith('Profile updated.')
})
}
2024-04-23 21:01:27 +00:00
private renderComponent (user: User) {
return this.be(user).render(ProfileForm)
}
}