import { mount } from '@vue/test-utils' import Drawer from '..' import Button from '../../button' import { asyncExpect } from '@/tests/utils' const DrawerEventTester = { props: { maskClosable: { type: Boolean, default: true, }, destroyOnClose: { type: Boolean, default: false, }, }, data () { return { visible: false, } }, mounted () { this.$nextTick(() => { this.visible = true }) }, methods: { onClose () { this.visible = false }, open () { this.visible = true }, }, render () { const drawerProps = { props: { visible: this.visible, getContainer: false, ...this.$props, }, on: { close: this.onClose, }, } return (
Here is content of Drawer
) }, } describe('Drawer', () => { it('render correctly', async () => { const wrapper = mount(DrawerEventTester, { sync: false, }) await asyncExpect(() => { const body = wrapper.find('.ant-drawer-body').exists() expect(body).toBe(true) wrapper.find('button.ant-btn').trigger('click') const content = wrapper.find('.ant-drawer-body').vnode.elm.innerHTML expect(content).toBe('Here is content of Drawer') expect(wrapper.html()).toMatchSnapshot() }) }, 1000) it('mask trigger onClose', async () => { const wrapper = mount(DrawerEventTester, { sync: false, }) await asyncExpect(() => { wrapper.find('button.ant-btn').trigger('click') expect(wrapper.vm.visible).toBe(true) wrapper.find('.ant-drawer-mask').trigger('click') expect(wrapper.vm.visible).toBe(false) }) }) it('close button trigger onClose', async () => { const wrapper = mount(DrawerEventTester, { sync: false, }) await asyncExpect(() => { wrapper.find('button.ant-btn').trigger('click') expect(wrapper.vm.visible).toBe(true) wrapper.find('.ant-drawer-close').trigger('click') expect(wrapper.vm.visible).toBe(false) }) }) it('maskClosable no trigger onClose', async () => { const wrapper = mount(DrawerEventTester, { propsData: { maskClosable: false, }, sync: false, }) await asyncExpect(() => { wrapper.find('button.ant-btn').trigger('click') expect(wrapper.vm.visible).toBe(true) wrapper.find('.ant-drawer-mask').trigger('click') expect(wrapper.vm.visible).toBe(true) }) }) it('destroyOnClose is true onClose', async () => { const wrapper = mount(DrawerEventTester, { propsData: { destroyOnClose: true, }, sync: false, }) await asyncExpect(() => { wrapper.find('button.ant-btn').trigger('click') expect(wrapper.find('.ant-drawer-wrapper-body').exists()).toBe(true) wrapper.setData({ visible: false, }) wrapper.find('.ant-drawer-wrapper-body').trigger('transitionend') }) await asyncExpect(() => { expect(wrapper.find('.ant-drawer-wrapper-body').exists()).toBe(false) }) }) it('no mask and no closable', async () => { const wrapper = mount(DrawerEventTester, { propsData: { destroyOnClose: true, }, sync: false, }) await asyncExpect(() => { wrapper.find('button.ant-btn').trigger('click') expect(wrapper.vm.visible).toBe(true) wrapper.find('.ant-drawer-close').trigger('click') expect(wrapper.vm.visible).toBe(false) }) }) })