import { mount } from '@vue/test-utils';
import Menubar from './Menubar.vue';

describe('Menubar.vue', () => {
    let wrapper;

    beforeEach(() => {
        wrapper = mount(Menubar, {
            global: {
                stubs: {
                    'router-link': true
                }
            },
            props: {
                model: [
                    {
                        label: 'File',
                        icon: 'pi pi-fw pi-file',
                        items: [
                            {
                                label: 'New',
                                icon: 'pi pi-fw pi-plus',
                                items: [
                                    {
                                        label: 'Bookmark',
                                        icon: 'pi pi-fw pi-bookmark'
                                    },
                                    {
                                        label: 'Video',
                                        icon: 'pi pi-fw pi-video'
                                    }
                                ]
                            },
                            {
                                label: 'Delete',
                                icon: 'pi pi-fw pi-trash'
                            },
                            {
                                separator: true
                            },
                            {
                                label: 'Export',
                                icon: 'pi pi-fw pi-external-link'
                            }
                        ]
                    },
                    {
                        label: 'Quit',
                        icon: 'pi pi-fw pi-power-off'
                    }
                ]
            },
            slots: {
                start: 'Start Slot',
                end: 'End Slot'
            }
        });
    });

    it('should exist', () => {
        expect(wrapper.find('.p-menubar.p-component').exists()).toBe(true);
        expect(wrapper.find('.p-menubar-root-list').exists()).toBe(true);
        expect(wrapper.findAll('ul.p-submenu-list').length).toBe(2);
        expect(wrapper.findAll('ul.p-submenu-list')[0].findAll('li.p-menuitem')[0].find('.p-menuitem-text').text()).toBe('New');
        expect(wrapper.findAll('li.p-menuitem').length).toBe(7);
        expect(wrapper.findAll('li.p-menuitem-separator').length).toBe(1);
    });

    it('should slot visible', () => {
        expect(wrapper.find('.p-menubar-start').exists()).toBe(true);
        expect(wrapper.find('.p-menubar-end').exists()).toBe(true);
        expect(wrapper.find('.p-menubar-end').text()).toBe('End Slot');
    });
});