mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2026-04-03 08:05:33 +00:00
184 lines
5.8 KiB
JavaScript
184 lines
5.8 KiB
JavaScript
import { mount } from '@vue/test-utils'
|
|
import PasswordForm from './PasswordForm.vue'
|
|
|
|
const localVue = global.localVue
|
|
|
|
describe('PasswordForm.vue', () => {
|
|
let mocks
|
|
|
|
beforeEach(() => {
|
|
mocks = {
|
|
$t: jest.fn((key) => key),
|
|
}
|
|
})
|
|
|
|
const Wrapper = (props = {}) => {
|
|
return mount(PasswordForm, { mocks, localVue, propsData: props })
|
|
}
|
|
|
|
describe('without requireOldPassword', () => {
|
|
let wrapper
|
|
|
|
beforeEach(() => {
|
|
wrapper = Wrapper()
|
|
})
|
|
|
|
it('renders two input fields (new password, confirm)', () => {
|
|
expect(wrapper.findAll('input')).toHaveLength(2)
|
|
})
|
|
|
|
it('does not render old password field', () => {
|
|
expect(wrapper.find('input#oldPassword').exists()).toBe(false)
|
|
})
|
|
|
|
it('renders new password field', () => {
|
|
expect(wrapper.find('input#password').exists()).toBe(true)
|
|
})
|
|
|
|
it('renders password confirmation field', () => {
|
|
expect(wrapper.find('input#passwordConfirmation').exists()).toBe(true)
|
|
})
|
|
|
|
it('renders submit button', () => {
|
|
expect(wrapper.find('button[type="submit"]').exists()).toBe(true)
|
|
})
|
|
|
|
it('renders password strength indicator', () => {
|
|
expect(wrapper.findComponent({ name: 'PasswordMeter' }).exists()).toBe(true)
|
|
})
|
|
|
|
describe('submit with empty fields', () => {
|
|
it('does not emit submit', async () => {
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.emitted('submit')).toBeFalsy()
|
|
})
|
|
})
|
|
|
|
describe('submit with mismatched passwords', () => {
|
|
beforeEach(async () => {
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('different')
|
|
})
|
|
|
|
it('does not emit submit', async () => {
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.emitted('submit')).toBeFalsy()
|
|
})
|
|
})
|
|
|
|
describe('submit with valid input', () => {
|
|
beforeEach(async () => {
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('supersecret')
|
|
})
|
|
|
|
it('emits submit with form data', async () => {
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.emitted('submit')).toBeTruthy()
|
|
expect(wrapper.emitted('submit')[0][0]).toEqual({
|
|
password: 'supersecret',
|
|
passwordConfirmation: 'supersecret',
|
|
})
|
|
})
|
|
|
|
it('sets loading state on submit', async () => {
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.vm.loading).toBe(true)
|
|
})
|
|
})
|
|
|
|
describe('done()', () => {
|
|
it('resets loading and form fields', async () => {
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('supersecret')
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
|
|
wrapper.vm.done()
|
|
expect(wrapper.vm.loading).toBe(false)
|
|
expect(wrapper.vm.formData.password).toBe('')
|
|
expect(wrapper.vm.formData.passwordConfirmation).toBe('')
|
|
})
|
|
})
|
|
|
|
describe('fail()', () => {
|
|
it('resets loading but keeps form data', async () => {
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('supersecret')
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
|
|
wrapper.vm.fail()
|
|
expect(wrapper.vm.loading).toBe(false)
|
|
expect(wrapper.vm.formData.password).toBe('supersecret')
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('with requireOldPassword', () => {
|
|
let wrapper
|
|
|
|
beforeEach(() => {
|
|
wrapper = Wrapper({ requireOldPassword: true })
|
|
})
|
|
|
|
it('renders three input fields', () => {
|
|
expect(wrapper.findAll('input')).toHaveLength(3)
|
|
})
|
|
|
|
it('renders old password field', () => {
|
|
expect(wrapper.find('input#oldPassword').exists()).toBe(true)
|
|
})
|
|
|
|
describe('submit without old password', () => {
|
|
beforeEach(async () => {
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('supersecret')
|
|
})
|
|
|
|
it('does not emit submit', async () => {
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.emitted('submit')).toBeFalsy()
|
|
})
|
|
})
|
|
|
|
describe('submit with all fields valid', () => {
|
|
beforeEach(async () => {
|
|
await wrapper.find('input#oldPassword').setValue('oldsecret')
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('supersecret')
|
|
})
|
|
|
|
it('emits submit with all form data including oldPassword', async () => {
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.emitted('submit')[0][0]).toEqual({
|
|
oldPassword: 'oldsecret',
|
|
password: 'supersecret',
|
|
passwordConfirmation: 'supersecret',
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('done()', () => {
|
|
it('also resets oldPassword field', async () => {
|
|
await wrapper.find('input#oldPassword').setValue('oldsecret')
|
|
await wrapper.find('input#password').setValue('supersecret')
|
|
await wrapper.find('input#passwordConfirmation').setValue('supersecret')
|
|
await wrapper.find('form').trigger('submit')
|
|
await wrapper.vm.$nextTick()
|
|
|
|
wrapper.vm.done()
|
|
expect(wrapper.vm.formData.oldPassword).toBe('')
|
|
expect(wrapper.vm.formData.password).toBe('')
|
|
expect(wrapper.vm.formData.passwordConfirmation).toBe('')
|
|
})
|
|
})
|
|
})
|
|
})
|