import { mount } from '@vue/test-utils'; import Drawer from '..'; import Button from '../../button'; import { asyncExpect } from '../../../tests/utils'; export function $$(className) { return document.body.querySelectorAll(className); } const MultiDrawer = { props: { placement: { type: String, default: 'right', }, }, data() { return { visible: false, childrenDrawer: false, }; }, methods: { showDrawer() { this.visible = true; }, onClose() { this.visible = false; }, showChildrenDrawer() { this.childrenDrawer = true; }, onChildrenDrawerClose() { this.childrenDrawer = false; }, }, render() { const drawerProps = { title: 'Multi-level drawer', width: 520, visible: this.visible, getContainer: false, class: 'test_drawer', placement: this.placement, onClose: this.onClose, }; const childrenDrawerProps = { title: 'Two-level Drawer', width: 320, class: 'Two-level', visible: this.childrenDrawer, getContainer: false, placement: this.placement, onClose: this.onChildrenDrawerClose, }; const buttonProps = { type: 'primary', id: 'open_drawer', onClick: this.showDrawer, }; return (
This is two-level drawer
); }, }; describe('Drawer', () => { it('render right MultiDrawer', async () => { const wrapper = mount(MultiDrawer, { props: { placement: 'right', }, sync: false, }); await asyncExpect(() => { wrapper.find('#open_drawer').trigger('click'); }, 0); await asyncExpect(() => { wrapper.find('#open_two_drawer').trigger('click'); }, 0); await asyncExpect(() => { const translateX = wrapper.find('.test_drawer').element.style.transform; expect(translateX).toEqual('translateX(-180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); }, 1000); }); it('render left MultiDrawer', async () => { document.body.innerHTML = ''; const wrapper = mount(MultiDrawer, { props: { placement: 'left', }, sync: false, }); await asyncExpect(() => { wrapper.find('#open_drawer').trigger('click'); }, 0); await asyncExpect(() => { wrapper.find('#open_two_drawer').trigger('click'); }, 0); await asyncExpect(() => { const translateX = wrapper.find('.test_drawer').element.style.transform; expect(translateX).toEqual('translateX(180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); }, 1000); }); it('render top MultiDrawer', async () => { const wrapper = mount(MultiDrawer, { props: { placement: 'top', }, sync: false, }); await asyncExpect(() => { wrapper.find('#open_drawer').trigger('click'); }, 0); await asyncExpect(() => { wrapper.find('#open_two_drawer').trigger('click'); }, 0); await asyncExpect(() => { const translateY = wrapper.find('.test_drawer').element.style.transform; expect(translateY).toEqual('translateY(180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); }, 1000); }); });