From c5193d949d36bb7332afaef49f36e5a1a989ed9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tu=C4=9F=C3=A7e=20K=C3=BC=C3=A7=C3=BCko=C4=9Flu?= Date: Tue, 22 Mar 2022 10:19:14 +0300 Subject: [PATCH] Create PanelMenu.spec.js --- src/components/panelmenu/PanelMenu.spec.js | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/components/panelmenu/PanelMenu.spec.js diff --git a/src/components/panelmenu/PanelMenu.spec.js b/src/components/panelmenu/PanelMenu.spec.js new file mode 100644 index 000000000..c292f2a8e --- /dev/null +++ b/src/components/panelmenu/PanelMenu.spec.js @@ -0,0 +1,86 @@ +import { mount } from '@vue/test-utils'; +import PanelMenu from './PanelMenu.vue'; + +describe('PanelMenu', () => { + let wrapper; + + beforeEach(() => { + wrapper = mount(PanelMenu, { + global: { + stubs: { + 'router-link': true + } + }, + props: { + model: [ + { + key: '2', + label: 'Users', + icon: 'pi pi-fw pi-user', + items: [ + { + key: '2_0', + label: 'New', + icon: 'pi pi-fw pi-user-plus', + + }, + { + key: '2_1', + label: 'Delete', + icon: 'pi pi-fw pi-user-minus', + }, + { + key: '2_2', + label: 'Search', + icon: 'pi pi-fw pi-users', + items: [ + { + key: '2_2_0', + label: 'Filter', + icon: 'pi pi-fw pi-filter', + items: [ + { + key: '2_2_0_0', + label: 'Print', + icon: 'pi pi-fw pi-print' + } + ] + }, + { + key: '2_2_1', + icon: 'pi pi-fw pi-bars', + label: 'List' + } + ] + } + ] + } + ] + } + }); + }); + + it('should exist', () => { + expect(wrapper.find('.p-panelmenu.p-component').exists()).toBe(true); + expect(wrapper.findAll('.p-menuitem').length).toBe(6); + expect(wrapper.findAll('.p-toggleable-content').length).toBe(7); + expect(wrapper.findAll('.p-submenu-list').length).toBe(3); + }); + + it('should toggle', async () => { + expect(wrapper.findAll('.p-toggleable-content')[0].attributes().style).toBe('display: none;'); + + await wrapper.vm.onItemClick({}, wrapper.vm.model[0]); + + expect(wrapper.find('.p-panelmenu-header-link > .p-panelmenu-icon').classes()).toContain('pi-chevron-down'); + expect(wrapper.findAll('.p-toggleable-content')[0].attributes().style).toBe(undefined); + }); + + it('should update expandedKeys', async () => { + await wrapper.setProps({ expandedKeys: {'2': true} }); + + await wrapper.vm.onItemClick({}, wrapper.vm.model[0].items[2]); + + expect(wrapper.emitted()['update:expandedKeys'][0]).toEqual([{ '2': true, '2_2': true }]); + }); +}); \ No newline at end of file