accordion & sidebar tests added

pull/3449/head
Tuğçe Küçükoğlu 2022-12-27 17:17:26 +03:00
parent 021c78db1b
commit a408f694a1
2 changed files with 111 additions and 16 deletions

View File

@ -1,4 +1,5 @@
import { mount } from '@vue/test-utils'; import { mount } from '@vue/test-utils';
import { expect, it } from 'vitest';
import AccordionTab from '../accordiontab/AccordionTab.vue'; import AccordionTab from '../accordiontab/AccordionTab.vue';
import Accordion from './Accordion.vue'; import Accordion from './Accordion.vue';
@ -47,4 +48,42 @@ describe('Accordion.vue', () => {
expect(allTabs[0].classes()).not.toContain('p-accordion-tab-active'); expect(allTabs[0].classes()).not.toContain('p-accordion-tab-active');
expect(allTabs[1].classes()).toContain('p-accordion-tab-active'); expect(allTabs[1].classes()).toContain('p-accordion-tab-active');
}); });
it('should work tab click', async () => {
const firstHeader = wrapper.find('a.p-accordion-header-link');
await firstHeader.trigger('click');
expect(wrapper.emitted()['update:activeIndex'][0]).toEqual([0]);
expect(wrapper.emitted()['tab-click'][0][0].index).toEqual(0);
});
it('should open tab with keydown', async () => {
const firstHeader = wrapper.find('a.p-accordion-header-link');
await firstHeader.trigger('keydown', { code: 'Enter' });
expect(wrapper.emitted()['update:activeIndex'][0]).toEqual([0]);
expect(wrapper.emitted()['tab-open'][0][0].index).toEqual(0);
});
it('should close tab with keydown', async () => {
await wrapper.setProps({ activeIndex: 0 });
const firstHeader = wrapper.find('a.p-accordion-header-link');
await firstHeader.trigger('keydown', { code: 'Enter' });
expect(wrapper.emitted()['update:activeIndex'][0]).toEqual([null]);
expect(wrapper.emitted()['tab-close'][0][0].index).toEqual(0);
});
it('should work multiple mode', async () => {
const firstHeader = wrapper.find('a.p-accordion-header-link');
await wrapper.setProps({ activeIndex: [1], multiple: true });
await firstHeader.trigger('click');
expect(wrapper.emitted()['update:activeIndex'][0]).toEqual([[1, 0]]);
});
}); });

View File

@ -1,5 +1,6 @@
import { mount } from '@vue/test-utils'; import { mount } from '@vue/test-utils';
import PrimeVue from 'primevue/config'; import PrimeVue from 'primevue/config';
import { describe, expect, it } from 'vitest';
import Sidebar from './Sidebar.vue'; import Sidebar from './Sidebar.vue';
describe('Sidebar.vue', () => { describe('Sidebar.vue', () => {
@ -18,7 +19,8 @@ describe('Sidebar.vue', () => {
bazeZIndex: 1000 bazeZIndex: 1000
}, },
slots: { slots: {
default: `<h3>Left Sidebar</h3>` default: `<h3>Left Sidebar</h3>`,
header: `<span class="header">Header Template</span>`
} }
}); });
}); });
@ -58,4 +60,58 @@ describe('Sidebar.vue', () => {
expect(icon.classes()).toContain('pi-discord'); expect(icon.classes()).toContain('pi-discord');
}); });
it('should header slot rendered', () => {
expect(wrapper.find('.p-sidebar-header').exists()).toBe(true);
expect(wrapper.find('.p-sidebar-header-content').exists()).toBe(true);
expect(wrapper.find('span.header').exists()).toBe(true);
expect(wrapper.find('span.header').text()).toBe('Header Template');
});
it('should default slot rendered', () => {
expect(wrapper.find('h3').exists()).toBe(true);
expect(wrapper.find('h3').text()).toBe('Left Sidebar');
});
it('should keydown work', async () => {
const event = { code: 'Escape' };
await wrapper.vm.onKeydown(event);
expect(wrapper.emitted()['update:visible'][0]).toEqual([false]);
});
});
describe('when visible is false', () => {
let wrapper;
beforeEach(() => {
wrapper = mount(Sidebar, {
global: {
plugins: [PrimeVue],
stubs: {
teleport: true,
transition: false
}
},
props: {
visible: true,
bazeZIndex: 1000
}
});
});
it('should show and hide emit work', async () => {
expect(wrapper.emitted()['show'][0]).toEqual([]);
await wrapper.setProps({ visible: false });
expect(wrapper.emitted()['hide'][0]).toEqual([]);
});
it('should be destroyed', () => {
wrapper.unmount();
expect(wrapper.componentVM.container).toBe(null);
expect(wrapper.componentVM.mask).toBe(null);
});
}); });