124 lines
4.9 KiB
JavaScript
124 lines
4.9 KiB
JavaScript
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');
|
|
});
|
|
}); |