From b21c5752b872feb96670f720ef5ca81303a4ac50 Mon Sep 17 00:00:00 2001 From: jtubau Date: Wed, 30 Apr 2025 10:41:49 +0200 Subject: [PATCH] test: refs #7069 add unit tests for VnAccountNumber component --- .../__tests__/vnAccountNumber.spec.js | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/components/__tests__/vnAccountNumber.spec.js diff --git a/src/components/__tests__/vnAccountNumber.spec.js b/src/components/__tests__/vnAccountNumber.spec.js new file mode 100644 index 000000000..937ed171c --- /dev/null +++ b/src/components/__tests__/vnAccountNumber.spec.js @@ -0,0 +1,58 @@ +import { describe, expect, it, vi, beforeEach } from 'vitest'; +import { createWrapper } from 'app/test/vitest/helper'; +import VnAccountNumber from 'src/components/common/VnAccountNumber.vue'; + +const VnInputStub = { + name: 'VnInput', + props: ['modelValue'], + emits: ['input', 'keydown', 'blur'], + template: ` + + `, +}; + +describe('VnAccountNumber', () => { + let wrapper; + let input; + let spyShort; + + beforeEach(() => { + wrapper = createWrapper(VnAccountNumber, { + props: { modelValue: '' }, + global: { stubs: { VnInput: VnInputStub } }, + }); + wrapper = wrapper.wrapper; + input = wrapper.findComponent(VnInputStub); + spyShort = vi.spyOn(wrapper.vm, 'useAccountShortToStandard'); + }); + + it('should filters out non-numeric characters on input event', async () => { + await input.vm.$emit('input', { target: { value: 'abc123.45!@#' } }); + const emitted = wrapper.emitted('update:modelValue'); + expect(emitted.pop()[0]).toBe('123.45'); + expect(spyShort).not.toHaveBeenCalled(); + }); + + it('should applies conversion on blur when valid short value provided', async () => { + await input.vm.$emit('input', { target: { value: '123.45' } }); + await input.trigger('keydown.tab'); + + const emitted = wrapper.emitted('update:modelValue'); + expect(emitted.pop()[0]).toBe('1230000045'); + expect(spyShort).toHaveBeenCalled(); + }); + + it('should does not change value for invalid input values', async () => { + await input.vm.$emit('input', { target: { value: '123' } }); + await input.trigger('keydown.tab'); + + const emitted = wrapper.emitted('update:modelValue'); + expect(emitted.pop()[0]).toBe('123'); + expect(spyShort).toHaveBeenCalled(); + }); +}); \ No newline at end of file