import { describe, expect, it, vi, beforeEach } from 'vitest'; import { createWrapper } from 'app/test/vitest/helper'; import VnAccountNumber from 'src/components/common/VnAccountNumber.vue'; describe('VnAccountNumber', () => { let wrapper; let input; let vnInput; let spyShort; beforeEach(() => { wrapper = createWrapper(VnAccountNumber); wrapper = wrapper.wrapper; input = wrapper.find('input'); vnInput = wrapper.findComponent({ name: 'VnInput' }); spyShort = vi.spyOn(wrapper.vm, 'useAccountShortToStandard'); }); it('should filter out non-numeric characters on input event', async () => { await input.setValue('abc123.45!@#'); const emitted = wrapper.emitted('update:modelValue'); expect(emitted.pop()[0]).toBe('123.45'); expect(spyShort).not.toHaveBeenCalled(); }); it('should apply conversion on blur when valid short value is provided', async () => { await input.setValue('123.45'); await vnInput.trigger('blur'); const emitted = wrapper.emitted('update:modelValue'); expect(emitted.pop()[0]).toBe('1230000045'); expect(spyShort).toHaveBeenCalled(); }); it('should not change value for invalid input values', async () => { await input.setValue('123'); await vnInput.trigger('blur'); const emitted = wrapper.emitted('update:modelValue'); expect(emitted.pop()[0]).toBe('123'); expect(spyShort).toHaveBeenCalled(); }); });