vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
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.
161 lines
4.2 KiB
161 lines
4.2 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 = { |
|
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 ( |
|
<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, { |
|
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); |
|
}); |
|
});
|
|
|