import Vue from 'vue'; import { mount } from '@vue/test-utils'; import Reset from '@/components/auth/Reset'; import { swal } from '@/js/notify'; jest.mock('@/js/notify'); test('reset password', async () => { Vue.prototype.$http.post .mockResolvedValueOnce({ errno: 1, msg: 'fail' }) .mockResolvedValueOnce({ errno: 0, msg: 'ok' }); const wrapper = mount(Reset, { mocks: { $route: ['/auth/reset/1', '1'] } }); const button = wrapper.find('button'); const info = wrapper.find('.callout-info'); const warning = wrapper.find('.callout-warning'); button.trigger('click'); expect(Vue.prototype.$http.post).not.toBeCalled(); expect(info.text()).toBe('auth.emptyPassword'); wrapper.findAll('[type="password"]').at(0).setValue('123456'); button.trigger('click'); expect(Vue.prototype.$http.post).not.toBeCalled(); expect(info.text()).toBe('auth.invalidPassword'); wrapper.findAll('[type="password"]').at(0).setValue('12345678'); button.trigger('click'); expect(Vue.prototype.$http.post).not.toBeCalled(); expect(info.text()).toBe('auth.invalidConfirmPwd'); wrapper.findAll('[type="password"]').at(1).setValue('123456'); button.trigger('click'); expect(Vue.prototype.$http.post).not.toBeCalled(); expect(info.text()).toBe('auth.invalidConfirmPwd'); wrapper.findAll('[type="password"]').at(1).setValue('12345678'); button.trigger('click'); expect(Vue.prototype.$http.post).toBeCalledWith( '/auth/reset/1', // Ignore `location.search` { password: '12345678' } ); await wrapper.vm.$nextTick(); expect(warning.text()).toBe('fail'); button.trigger('click'); await wrapper.vm.$nextTick(); expect(swal).toBeCalledWith({ type: 'success', html: 'ok' }); });