82 lines
2.7 KiB
JavaScript
82 lines
2.7 KiB
JavaScript
import { createWrapper } from 'app/test/vitest/helper.js';
|
|
import { describe, it, expect, beforeAll } from 'vitest';
|
|
import VnInputDateTime from 'components/common/VnInputDateTime.vue';
|
|
import vnDateBoot from 'src/boot/vnDate';
|
|
|
|
let vm;
|
|
let wrapper;
|
|
|
|
beforeAll(() => {
|
|
// Initialize the vnDate boot
|
|
vnDateBoot();
|
|
});
|
|
function generateWrapper(date, outlined, showEvent) {
|
|
wrapper = createWrapper(VnInputDateTime, {
|
|
props: {
|
|
modelValue: date,
|
|
isOutlined: outlined,
|
|
showEvent: showEvent,
|
|
},
|
|
});
|
|
wrapper = wrapper.wrapper;
|
|
vm = wrapper.vm;
|
|
}
|
|
|
|
describe('VnInputDateTime', () => {
|
|
describe('selectedDate', () => {
|
|
it('formats a valid datetime correctly', async () => {
|
|
generateWrapper('2023-12-25T10:30:00', false, true);
|
|
await vm.$nextTick();
|
|
expect(vm.selectedDate).toBe('25-12-2023 10:30');
|
|
});
|
|
|
|
it('handles null date value', async () => {
|
|
generateWrapper(null, false, true);
|
|
await vm.$nextTick();
|
|
expect(vm.selectedDate).not.toBe(null);
|
|
});
|
|
|
|
it('updates the model value when a new datetime is set', async () => {
|
|
vm.selectedDate = '31-12-2023 15:45';
|
|
await vm.$nextTick();
|
|
expect(wrapper.emitted()['update:modelValue']).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe('styleAttrs', () => {
|
|
it('should return empty styleAttrs when isOutlined is false', async () => {
|
|
generateWrapper('2023-12-25T10:30:00', false, true);
|
|
await vm.$nextTick();
|
|
expect(vm.styleAttrs).toEqual({});
|
|
});
|
|
|
|
it('should set styleAttrs when isOutlined is true', async () => {
|
|
generateWrapper('2023-12-25T10:30:00', true, true);
|
|
await vm.$nextTick();
|
|
expect(vm.styleAttrs).toEqual({
|
|
dense: true,
|
|
outlined: true,
|
|
rounded: true,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('component rendering', () => {
|
|
it('should render date and time icons', async () => {
|
|
generateWrapper('2023-12-25T10:30:00', false, true);
|
|
await vm.$nextTick();
|
|
const icons = wrapper.findAllComponents({ name: 'QIcon' });
|
|
expect(icons.length).toBe(2);
|
|
expect(icons[0].props('name')).toBe('today');
|
|
expect(icons[1].props('name')).toBe('access_time');
|
|
});
|
|
|
|
it('should render popup proxies for date and time', async () => {
|
|
generateWrapper('2023-12-25T10:30:00', false, true);
|
|
await vm.$nextTick();
|
|
const popups = wrapper.findAllComponents({ name: 'QPopupProxy' });
|
|
expect(popups.length).toBe(2);
|
|
});
|
|
});
|
|
});
|