From b385475d84ee748b6de821db01a1a964b3d318e4 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: Wed, 16 Mar 2022 16:15:49 +0300 Subject: [PATCH 1/8] Create InputMask.spec.js --- src/components/inputmask/InputMask.spec.js | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/components/inputmask/InputMask.spec.js diff --git a/src/components/inputmask/InputMask.spec.js b/src/components/inputmask/InputMask.spec.js new file mode 100644 index 000000000..9ff06f86b --- /dev/null +++ b/src/components/inputmask/InputMask.spec.js @@ -0,0 +1,38 @@ +import { mount } from '@vue/test-utils'; +import InputMask from './InputMask.vue'; + +describe('InputMask.vue', () => { + it('should exist', async () => { + const wrapper = mount(InputMask, { + props: { + modelValue: null, + mask: '99-999999', + placeholder: '99-999999' + } + }); + + expect(wrapper.find('.p-inputmask.p-component').exists()).toBe(true); + expect(wrapper.find('.p-inputmask.p-component').attributes().placeholder).toBe('99-999999'); + + const event = {'target': { 'value': '1' }}; + + await wrapper.vm.onInput(event); + + expect(wrapper.emitted()['update:modelValue'][0]).toEqual(['1']); + }); + + it('keydown event', async () => { + const wrapper = mount(InputMask, { + props: { + modelValue: null, + mask: '99/99/9999' + } + }); + + const event = {'target': { 'value': '1' }}; + + await wrapper.vm.onKeyDown(event); + + expect(wrapper.emitted().keydown[0]).toEqual([event]); + }); +}); \ No newline at end of file From ff32a760f4dd190299619899dc0a57396af6a557 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: Thu, 17 Mar 2022 17:14:41 +0300 Subject: [PATCH 2/8] Create InputSwitch.spec.js --- .../inputswitch/InputSwitch.spec.js | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/components/inputswitch/InputSwitch.spec.js diff --git a/src/components/inputswitch/InputSwitch.spec.js b/src/components/inputswitch/InputSwitch.spec.js new file mode 100644 index 000000000..20a160933 --- /dev/null +++ b/src/components/inputswitch/InputSwitch.spec.js @@ -0,0 +1,20 @@ +import { mount } from '@vue/test-utils'; +import InputSwitch from './InputSwitch.vue'; + +describe('InputSwitch.vue', () => { + it('should exist', async () => { + const wrapper = mount(InputSwitch); + + expect(wrapper.find('.p-inputswitch.p-component').exists()).toBe(true); + expect(wrapper.find('.p-inputswitch-slider').exists()).toBe(true); + + await wrapper.trigger('click'); + + expect(wrapper.emitted()['update:modelValue'][0]).toEqual([true]); + + await wrapper.setProps({ modelValue: true }); + + expect(wrapper.vm.checked).toBe(true); + expect(wrapper.find('.p-inputswitch').classes()).toContain('p-inputswitch-checked'); + }); +}); \ No newline at end of file From fbac6f5c852f8be2191e8b593405de39307cdf38 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: Thu, 17 Mar 2022 17:14:45 +0300 Subject: [PATCH 3/8] Update InputText.spec.js --- src/components/inputtext/InputText.spec.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/components/inputtext/InputText.spec.js b/src/components/inputtext/InputText.spec.js index 5466ccc16..fd9d75c34 100644 --- a/src/components/inputtext/InputText.spec.js +++ b/src/components/inputtext/InputText.spec.js @@ -13,18 +13,22 @@ describe('InputText.vue', () => { const input = wrapper.find('input'); expect(input.element.value).toEqual('PrimeVue'); - }) -}); + }); -describe('InputText.vue', () => { it('input event', async () => { const wrapper = mount(InputText); - const input = wrapper.find('input'); + const event = { target: { value: 'a' } }; - // await input.trigger('input', { keyCode: 65 }); - input.element.value = 'a'; - input.trigger('input'); + await wrapper.vm.onInput(event); - expect(input.element.value).toEqual('a'); - }) + expect(wrapper.emitted()['update:modelValue'][0]).toEqual(['a']); + }); + + it('should filled work', async () => { + const wrapper = mount(InputText); + + await wrapper.setProps({ modelValue: 'a' }); + + expect(wrapper.vm.filled).toBe(true); + }); }); \ No newline at end of file From a9c3a94e0fd1d04eecf7eb65319d8d401dc3ec24 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: Thu, 17 Mar 2022 17:14:49 +0300 Subject: [PATCH 4/8] Create Knob.spec.js --- src/components/knob/Knob.spec.js | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/components/knob/Knob.spec.js diff --git a/src/components/knob/Knob.spec.js b/src/components/knob/Knob.spec.js new file mode 100644 index 000000000..f99622b1f --- /dev/null +++ b/src/components/knob/Knob.spec.js @@ -0,0 +1,47 @@ +import { mount } from '@vue/test-utils'; +import Knob from './Knob.vue'; + +describe('Knob.vue', () => { + let wrapper; + + beforeEach(() => { + wrapper = mount(Knob, { + props: { + modelValue: 20 + } + }); + }); + + it('should exist', () => { + expect(wrapper.find('.p-knob.p-component').exists()).toBe(true); + expect(wrapper.find('.p-knob-text').text()).toBe('20'); + }); + + it('should change with click event', async () => { + const event = { offsetX: 100, offsetY: 100 }; + + await wrapper.vm.onClick(event); + + expect(wrapper.emitted()['update:modelValue'][0]).toEqual([95]); + }); + + it('should min - max work', async () => { + await wrapper.setProps({ min: -50, max: 50 }); + + const event = { offsetX: 100, offsetY: 100 }; + + await wrapper.vm.onClick(event); + + expect(wrapper.emitted()['update:modelValue'][0]).toEqual([45]); + }); + + it('should step work', async () => { + await wrapper.setProps({ step: 10 }); + + const event = { offsetX: 18, offsetY: 30 }; + + await wrapper.vm.onClick(event); + + expect(wrapper.emitted()['update:modelValue'][0]).toEqual([30]); + }); +}); \ No newline at end of file From 59ebf7864cd5cfe585ea2eaeef160e6bcac9fe4f 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: Thu, 17 Mar 2022 17:14:53 +0300 Subject: [PATCH 5/8] Create Listbox.spec.js --- src/components/listbox/Listbox.spec.js | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/components/listbox/Listbox.spec.js diff --git a/src/components/listbox/Listbox.spec.js b/src/components/listbox/Listbox.spec.js new file mode 100644 index 000000000..6cdf8e9d3 --- /dev/null +++ b/src/components/listbox/Listbox.spec.js @@ -0,0 +1,38 @@ +import { mount } from '@vue/test-utils'; +import Listbox from './Listbox.vue'; + +describe('Listbox.vue', () => { + let wrapper; + + beforeEach(() => { + wrapper = mount(Listbox, { + props: { + modelValue: null, + options: [ + {name: 'New York', code: 'NY'}, + {name: 'Rome', code: 'RM'}, + {name: 'London', code: 'LDN'}, + {name: 'Istanbul', code: 'IST'}, + {name: 'Paris', code: 'PRS'} + ], + optionLabel: 'name' + } + }); + }); + + it('should exist', () => { + expect(wrapper.find('.p-listbox.p-component').exists()).toBe(true); + expect(wrapper.findAll('li.p-listbox-item').length).toBe(5); + expect(wrapper.findAll('li.p-listbox-item')[0].attributes()['aria-label']).toBe('New York'); + }); + + it('should select a list item', async () => { + await wrapper.vm.onOptionSelect({}, wrapper.vm.options[0]); + + expect(wrapper.emitted()['update:modelValue'][0]).toEqual([wrapper.vm.options[0]]); + + await wrapper.setProps({ modelValue: wrapper.vm.options[0] }); + + expect(wrapper.findAll('li.p-listbox-item')[0].classes()).toContain('p-highlight'); + }); +}); \ No newline at end of file From 14b21445943b71dd9bb795046cc1d2faad0a0d37 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: Thu, 17 Mar 2022 17:15:02 +0300 Subject: [PATCH 6/8] Create MegaMenu.spec.js --- src/components/megamenu/MegaMenu.spec.js | 88 ++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/components/megamenu/MegaMenu.spec.js diff --git a/src/components/megamenu/MegaMenu.spec.js b/src/components/megamenu/MegaMenu.spec.js new file mode 100644 index 000000000..2c077a40f --- /dev/null +++ b/src/components/megamenu/MegaMenu.spec.js @@ -0,0 +1,88 @@ +import { mount } from '@vue/test-utils'; +import MegaMenu from './MegaMenu.vue'; + +describe('MegaMenu.vue', () => { + let wrapper; + + beforeEach(() => { + wrapper = mount(MegaMenu, { + global: { + stubs: { + 'router-link': true + } + }, + props: { + model: [ + { + label: 'Videos', icon: 'pi pi-fw pi-video', + items: [ + [ + { + label: 'Video 1', + items: [{label: 'Video 1.1'}, {label: 'Video 1.2'}] + }, + { + label: 'Video 2', + items: [{label: 'Video 2.1'}, {label: 'Video 2.2'}] + } + ] + ] + }, + { + label: 'Users', icon: 'pi pi-fw pi-users', + items: [ + [ + { + label: 'User 1', + items: [{label: 'User 1.1'}, {label: 'User 1.2'}] + } + ], + [ + { + label: 'User 2', + items: [{label: 'User 2.1'}, {label: 'User 2.2'}] + }, + { + label: 'User 3', + items: [{label: 'User 3.1'}, {label: 'User 3.2'}] + } + ] + ] + } + ] + } + }); + }); + + it('should exists', () => { + expect(wrapper.find('.p-megamenu.p-component').exists()).toBe(true); + expect(wrapper.find('.p-megamenu-root-list').exists()).toBe(true); + expect(wrapper.findAll('ul.p-megamenu-submenu').length).toBe(5); + expect(wrapper.findAll('li.p-menuitem').length).toBe(12); + expect(wrapper.findAll('li.p-menuitem')[0].findAll('span.p-menuitem-text')[0].text()).toBe('Videos'); + expect(wrapper.findAll('li.p-megamenu-submenu-header')[0].text()).toBe('Video 1'); + expect(wrapper.findAll('li.p-menuitem')[1].findAll('span.p-menuitem-text')[0].text()).toBe('Video 1.1'); + }); + + it('should select item', async () => { + const firstItem = wrapper.findAll('li.p-menuitem')[0]; + + await wrapper.vm.onCategoryClick({}, wrapper.vm.model[0]); + + expect(firstItem.classes()).toContain('p-menuitem-active'); + }); + + it('should deselect item', async () => { + const firstItem = wrapper.findAll('li.p-menuitem')[0]; + + await wrapper.vm.onCategoryClick({}, wrapper.vm.model[0].items[0][0].items[0]); + + expect(firstItem.classes()).not.toContain('p-menuitem-active'); + }); + + it('should orientation work', async () => { + await wrapper.setProps({ orientation: 'vertical' }); + + expect(wrapper.find('.p-megamenu-vertical').exists()).toBe(true); + }); +}); \ No newline at end of file From 36846cc11be63b0b75d88da95f9d6828add0894d 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: Thu, 17 Mar 2022 17:15:09 +0300 Subject: [PATCH 7/8] Create Menu.spec.js --- src/components/menu/Menu.spec.js | 70 ++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/components/menu/Menu.spec.js diff --git a/src/components/menu/Menu.spec.js b/src/components/menu/Menu.spec.js new file mode 100644 index 000000000..758f1ae3e --- /dev/null +++ b/src/components/menu/Menu.spec.js @@ -0,0 +1,70 @@ +import { mount } from '@vue/test-utils'; +import PrimeVue from '@/components/config/PrimeVue'; +import Menu from './Menu.vue'; + +describe('Menu.vue', () => { + let wrapper; + + beforeEach(() => { + wrapper = mount(Menu, { + global: { + plugins: [PrimeVue], + stubs: { + 'router-link': true, + teleport: true + } + }, + props: { + model: [ + { + label: 'Options', + items: [{ + label: 'Update', + icon: 'pi pi-refresh', + command: () => { + this.$toast.add({severity:'success', summary:'Updated', detail:'Data Updated', life: 3000}); + } + }, + { + label: 'Delete', + icon: 'pi pi-times', + command: () => { + this.$toast.add({ severity: 'warn', summary: 'Delete', detail: 'Data Deleted', life: 3000}); + } + } + ]}, + { + label: 'Navigate', + items: [{ + label: 'Vue Website', + icon: 'pi pi-external-link', + url: 'https://vuejs.org/' + }, + { + label: 'Router', + icon: 'pi pi-upload', + to: '/fileupload' + } + ]} + ] + } + }); + }); + + it('should exist', () => { + expect(wrapper.find('.p-menu.p-component').exists()).toBe(true); + expect(wrapper.findAll('.p-submenu-header').length).toBe(2); + expect(wrapper.findAll('.p-submenu-header')[0].text()).toBe('Options'); + expect(wrapper.findAll('.p-menuitem').length).toBe(4); + expect(wrapper.findAll('.p-menuitem')[0].find('span.p-menuitem-text').text()).toBe('Update'); + expect(wrapper.findAll('.p-menuitem')[2].find('a').attributes().href).toBe('https://vuejs.org/'); + }); + + it('should popup work', async () => { + await wrapper.setProps({ popup: true }); + + await wrapper.vm.toggle({}); + + expect(wrapper.find('.p-menu.p-component').exists()).toBe(true); + }); +}); \ No newline at end of file From 0bc906dfcb3cbc36476127ef5a7893c511b3dd56 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: Thu, 17 Mar 2022 17:27:52 +0300 Subject: [PATCH 8/8] Create Menubar.spec.js --- src/components/menubar/Menubar.spec.js | 74 ++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/components/menubar/Menubar.spec.js diff --git a/src/components/menubar/Menubar.spec.js b/src/components/menubar/Menubar.spec.js new file mode 100644 index 000000000..006eeed1a --- /dev/null +++ b/src/components/menubar/Menubar.spec.js @@ -0,0 +1,74 @@ +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-menu-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'); + }); +}); \ No newline at end of file