import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest'; import { createWrapper } from 'app/test/vitest/helper'; import VnInputTime from 'components/common/VnInputTime.vue'; describe('VnInputTime', () => { let wrapper; let vm; beforeAll(() => { wrapper = createWrapper(VnInputTime, { props: { isOutlined: true, timeOnly: false, }, }); vm = wrapper.vm; wrapper = wrapper.wrapper; }); afterEach(() => { vi.clearAllMocks(); }); it('should return the correct data if isOutlined is true', () => { expect(vm.isOutlined).toBe(true); expect(vm.styleAttrs).toEqual({ dense: true, outlined: true, rounded: true }); }); it('should return the formatted data', () => { expect(vm.dateToTime('2022-01-01T03:23:43')).toBe('03:23'); }); describe('formattedTime', () => { it('should return the formatted time for a valid ISO date', () => { vm.model = '2025-01-02T15:45:00'; expect(vm.formattedTime).toBe('15:45'); }); it('should handle null model value gracefully', () => { vm.model = null; expect(vm.formattedTime).toBe(null); }); it('should handle time-only input correctly', async () => { await wrapper.setProps({ timeOnly: true }); vm.formattedTime = '14:30'; expect(vm.model).toBe('14:30'); }); it('should pad short time values correctly', async () => { await wrapper.setProps({ timeOnly: true }); vm.formattedTime = '9'; expect(vm.model).toBe('09:00'); }); it('should not update the model if the value is unchanged', () => { vm.model = '14:30'; const previousModel = vm.model; vm.formattedTime = '14:30'; expect(vm.model).toBe(previousModel); }); }); });