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 () { console.log('hello') this.childrenDrawer = false }, }, render () { const drawerProps = { props: { title: 'Multi-level drawer', width: 520, visible: this.visible, getContainer: false, wrapClassName: 'test_drawer', placement: this.placement, }, on: { close: this.onClose, }, } const childrenDrawerProps = { props: { title: 'Two-level Drawer', width: 320, wrapClassName: 'Two-level', visible: this.childrenDrawer, getContainer: false, placement: this.placement, }, on: { close: this.onChildrenDrawerClose, }, } const buttonProps = { props: { type: 'primary', }, attrs: { id: 'open_drawer', }, on: { click: this.showDrawer, }, } return (
This is two-level drawer
) }, } describe('Drawer', () => { it('render right MultiDrawer', async () => { const wrapper = mount(MultiDrawer, { propsData: { 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('.ant-drawer.test_drawer').element.parentElement.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, { propsData: { 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('.ant-drawer.test_drawer').element.parentElement.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, { propsData: { 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('.ant-drawer.test_drawer').element.parentElement.style.transform expect(translateY).toEqual('translateY(180px)') expect(wrapper.find('#two_drawer_text').exists()).toBe(true) }, 1000) }) })