You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
4.4 KiB
176 lines
4.4 KiB
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 = {
|
|
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 (
|
|
<div>
|
|
<Button {...buttonProps}>open</Button>
|
|
<Drawer {...drawerProps}>
|
|
<Button type="primary" id="open_two_drawer" onClick={this.showChildrenDrawer}>
|
|
Two-level drawer
|
|
</Button>
|
|
<Drawer {...childrenDrawerProps}>
|
|
<div id="two_drawer_text">This is two-level drawer</div>
|
|
</Drawer>
|
|
<div
|
|
style={{
|
|
position: 'absolute',
|
|
bottom: 0,
|
|
width: '100%',
|
|
borderTop: '1px solid #e8e8e8',
|
|
padding: '10px 16px',
|
|
textAlign: 'right',
|
|
left: 0,
|
|
background: '#fff',
|
|
borderRadius: '0 0 4px 4px',
|
|
}}
|
|
>
|
|
<Button
|
|
style={{
|
|
marginRight: 8,
|
|
}}
|
|
onClick={this.onClose}
|
|
>
|
|
Cancel
|
|
</Button>
|
|
<Button onClick={this.onClose} type="primary">
|
|
Submit
|
|
</Button>
|
|
</div>
|
|
</Drawer>
|
|
</div>
|
|
);
|
|
},
|
|
};
|
|
|
|
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.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.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.style.transform;
|
|
expect(translateY).toEqual('translateY(180px)');
|
|
expect(wrapper.find('#two_drawer_text').exists()).toBe(true);
|
|
}, 1000);
|
|
});
|
|
});
|