diff --git a/test/vitest/__tests__/components/common/VnSmsDialog.spec.js b/test/vitest/__tests__/components/common/VnSmsDialog.spec.js new file mode 100644 index 000000000..0b3473982 --- /dev/null +++ b/test/vitest/__tests__/components/common/VnSmsDialog.spec.js @@ -0,0 +1,58 @@ +import { createWrapper } from 'app/test/vitest/helper'; +import VnSmsDialog from 'components/common/VnSmsDialog.vue'; +import { vi, afterEach, beforeAll, describe, expect, it } from 'vitest'; + + +describe('VnSmsDialog', () => { + let vm; + const orderId = 1; + const shipped = new Date(); + const phone = '012345678'; + const promise = (response) => {return response;}; + const template = 'minAmount'; + const locale = 'en'; + + beforeAll(() => { + vm = createWrapper(VnSmsDialog, { + propsData: { + data: { + orderId, + shipped + }, + template, + locale, + phone, + promise + } + }).vm; + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + describe('updateMessage()', () => { + it('should update the message value with the correct template and parameters', () => { + vm.updateMessage(); + + expect(vm.message).toEqual(`A minimum amount of 50€ (VAT excluded) is required for your order ${orderId} of ${shipped} to receive it without additional shipping costs.`); + }); + }); + + describe('send()', async () => { + it('should send the message', async () => { + vi.spyOn(vm.props, 'promise'); + vm.message = 'Example message'; + const response = { + orderId, + shipped, + destination: phone, + message: vm.message + }; + await vm.send(); + + expect(vm.isLoading).toEqual(false); + expect(vm.props.promise).toHaveBeenCalledWith(response); + }); + }); +});