diff --git a/src/components/cascadeselect/CascadeSelect.spec.js b/src/components/cascadeselect/CascadeSelect.spec.js new file mode 100644 index 000000000..8c01a9915 --- /dev/null +++ b/src/components/cascadeselect/CascadeSelect.spec.js @@ -0,0 +1,124 @@ +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'); + }); +}); \ No newline at end of file