71 lines
2.2 KiB
JavaScript
71 lines
2.2 KiB
JavaScript
import { createWrapper, axios } from 'app/test/vitest/helper';
|
|
import VnChangePassword from 'src/components/common/VnChangePassword.vue';
|
|
import { vi, beforeEach, afterEach, beforeAll, describe, expect, it } from 'vitest';
|
|
import { Notify } from 'quasar';
|
|
|
|
describe('VnSmsDialog', () => {
|
|
let vm;
|
|
|
|
beforeAll(() => {
|
|
vi.spyOn(axios, 'get').mockResolvedValue({
|
|
data: [],
|
|
});
|
|
vm = createWrapper(VnChangePassword, {
|
|
propsData: {
|
|
submitFn: vi.fn(),
|
|
},
|
|
}).vm;
|
|
});
|
|
|
|
beforeEach(() => {
|
|
Notify.create = vi.fn();
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('should notify when new password is empty', async () => {
|
|
vm.passwords.newPassword = '';
|
|
vm.passwords.repeatPassword = 'password';
|
|
|
|
await vm.validate();
|
|
expect(Notify.create).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
message: 'You must enter a new password',
|
|
type: 'negative',
|
|
})
|
|
);
|
|
});
|
|
|
|
it("should notify when passwords don't match", async () => {
|
|
vm.passwords.newPassword = 'password1';
|
|
vm.passwords.repeatPassword = 'password2';
|
|
await vm.validate();
|
|
expect(Notify.create).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
message: `Passwords don't match`,
|
|
type: 'negative',
|
|
})
|
|
);
|
|
});
|
|
|
|
describe('if passwords match', () => {
|
|
it('should call submitFn and emit password', async () => {
|
|
vm.passwords.newPassword = 'password';
|
|
vm.passwords.repeatPassword = 'password';
|
|
await vm.validate();
|
|
expect(vm.props.submitFn).toHaveBeenCalledWith('password', undefined);
|
|
});
|
|
|
|
it('should call submitFn and emit password and old password', async () => {
|
|
vm.passwords.newPassword = 'password';
|
|
vm.passwords.repeatPassword = 'password';
|
|
vm.passwords.oldPassword = 'oldPassword';
|
|
|
|
await vm.validate();
|
|
expect(vm.props.submitFn).toHaveBeenCalledWith('password', 'oldPassword');
|
|
});
|
|
});
|
|
});
|