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.onHeaderClick({}, wrapper.vm.model[0]); expect(wrapper.find('.p-panelmenu-header-action > .p-submenu-icon').classes()).toContain('pi-chevron-down'); setTimeout(() => { expect(wrapper.findAll('.p-toggleable-content')[0].attributes().style).toBe(''); }, 25); }); it('should update expandedKeys', async () => { await wrapper.setProps({ expandedKeys: { 2: true } }); await wrapper.vm.onHeaderClick({}, wrapper.vm.model[0].items[2]); expect(wrapper.emitted()['update:expandedKeys'][0]).toEqual([{ 2: true, '2_2': true }]); }); });