import { mount } from '@vue/test-utils'; import PrimeVue from '@/components/config/PrimeVue'; import CascadeSelect from './CascadeSelect.vue'; describe('CascadeSelect.vue', () => { let wrapper; beforeEach(() => { wrapper = mount(CascadeSelect, { global: { plugins: [PrimeVue], stubs: { teleport: true } }, props: { modelValue: null, options: [ { name: 'Australia', code: 'AU', states: [ { name: 'New South Wales', cities: [ {cname: 'Sydney', code: 'A-SY'}, {cname: 'Newcastle', code: 'A-NE'}, {cname: 'Wollongong', code: 'A-WO'} ] }, { name: 'Queensland', cities: [ {cname: 'Brisbane', code: 'A-BR'}, {cname: 'Townsville', code: 'A-TO'} ] }, ] }, { name: 'Canada', code: 'CA', states: [ { name: 'Quebec', cities: [ {cname: 'Montreal', code: 'C-MO'}, {cname: 'Quebec City', code: 'C-QU'} ] }, { name: 'Ontario', cities: [ {cname: 'Ottawa', code: 'C-OT'}, {cname: 'Toronto', code: 'C-TO'} ] }, ] }, { name: 'United States', code: 'US', states: [ { name: 'California', cities: [ {cname: 'Los Angeles', code: 'US-LA'}, {cname: 'San Diego', code: 'US-SD'}, {cname: 'San Francisco', code: 'US-SF'} ] }, { name: 'Florida', cities: [ {cname: 'Jacksonville', code: 'US-JA'}, {cname: 'Miami', code: 'US-MI'}, {cname: 'Tampa', code: 'US-TA'}, {cname: 'Orlando', code: 'US-OR'} ] }, { name: 'Texas', cities: [ {cname: 'Austin', code: 'US-AU'}, {cname: 'Dallas', code: 'US-DA'}, {cname: 'Houston', code: 'US-HO'} ] } ] } ], optionLabel: 'cname', optionGroupLabel: 'name', optionGroupChildren: ['states', 'cities'] } }); }); it('should exist', async() => { expect(wrapper.find('.p-cascadeselect.p-component').exists()).toBe(true); }); it('should show list and sublist', async() => { expect(wrapper.find('.p-cascadeselect.p-component').exists()).toBe(true); await wrapper.trigger('click'); expect(wrapper.find('.p-cascadeselect-panel.p-cascadeselect-items').exists()).toBe(true); expect(wrapper.findAll('.p-cascadeselect-item').length).toBe(3); expect(wrapper.findAll('.p-cascadeselect-item-text')[0].text()).toBe('Australia'); const firstGroup = wrapper.findAll('.p-cascadeselect-item-content')[0]; await firstGroup.trigger('click'); expect(wrapper.find('.p-cascadeselect-panel.p-cascadeselect-sublist').exists()).toBe(true); const sublist = wrapper.find('.p-cascadeselect-panel.p-cascadeselect-sublist'); expect(sublist.findAll('.p-cascadeselect-item.p-cascadeselect-item-group').length).toBe(2); expect(sublist.findAll('.p-cascadeselect-item-text')[0].text()).toBe('New South Wales'); }); });