import Collapse from '..'; import CollapseItem from '../../collapse-item'; import { later, mount } from '../../../test/utils'; const component = { template: ` content content content `, components: { Collapse, CollapseItem }, props: { accordion: Boolean, border: { type: Boolean, default: true } }, data() { return { active: this.accordion ? '' : [] }; } }; test('basic mode', async () => { const wrapper = mount(component); const titles = wrapper.findAll('.van-collapse-item__title'); titles.at(0).trigger('click'); expect(wrapper.vm.active).toEqual(['first']); await later(); titles.at(1).trigger('click'); expect(wrapper.vm.active).toEqual(['first', 1]); await later(); titles.at(0).trigger('click'); expect(wrapper.vm.active).toEqual([1]); wrapper.destroy(); }); test('accordion', async () => { const wrapper = mount(component, { propsData: { accordion: true } }); const titles = wrapper.findAll('.van-collapse-item__title'); titles.at(0).trigger('click'); expect(wrapper.vm.active).toEqual('first'); titles.at(1).trigger('click'); expect(wrapper.vm.active).toEqual(1); await later(); titles.at(0).trigger('click'); expect(wrapper.vm.active).toEqual('first'); titles.at(0).trigger('click'); expect(wrapper.vm.active).toEqual(''); }); test('render collapse-item slot', () => { const wrapper = mount({ template: ` `, components: { Collapse, CollapseItem }, data() { return { active: [] }; } }); expect(wrapper).toMatchSnapshot(); }); test('disable border', () => { const wrapper = mount(component, { propsData: { border: false } }); expect(wrapper).toMatchSnapshot(); }); test('lazy render collapse content', async () => { const wrapper = mount({ template: ` content {{ content }} `, components: { Collapse, CollapseItem }, data() { return { content: '', active: [] }; } }); const titles = wrapper.findAll('.van-collapse-item__title'); titles.at(1).trigger('click'); await later(50); wrapper.vm.content = 'content'; expect(wrapper).toMatchSnapshot(); });