import React from 'react'; import { mount } from 'enzyme'; import Drawer from '..'; import Button from '../../button'; class MultiDrawer extends React.Component { state = { visible: false, childrenDrawer: false, hasChildren: true }; showDrawer = () => { this.setState({ visible: true, hasChildren: true, }); }; onClose = () => { this.setState({ visible: false, }); }; showChildrenDrawer = () => { this.setState({ childrenDrawer: true, hasChildren: true, }); }; onChildrenDrawerClose = () => { this.setState({ childrenDrawer: false, }); }; onRemoveChildDrawer = () => { this.setState({ hasChildren: false, }); }; render() { const { childrenDrawer, visible, hasChildren } = this.state; const { placement, push } = this.props; return (
{hasChildren && (
This is two-level drawer
)}
); } } describe('Drawer', () => { it('render right MultiDrawer', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); const translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual('translateX(-180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); }); it('render left MultiDrawer', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); const translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual('translateX(180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); wrapper.find('.Two-level .ant-drawer-close').simulate('click'); expect(wrapper.state().childrenDrawer).toBe(false); }); it('render top MultiDrawer', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); const translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual('translateY(180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); }); it('render MultiDrawer is child in unmount', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); wrapper.find('button#remove_drawer').simulate('click'); let translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual(undefined); wrapper.find('button#open_two_drawer').simulate('click'); translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual('translateY(180px)'); expect(wrapper.find('#two_drawer_text').exists()).toBe(true); }); it('custom MultiDrawer push distance', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); const translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual('translateX(-256px)'); }); it('custom MultiDrawer push with true', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); const translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toEqual('translateX(-180px)'); }); it('custom MultiDrawer push with false', () => { const wrapper = mount(); wrapper.find('button#open_drawer').simulate('click'); wrapper.find('button#open_two_drawer').simulate('click'); const translateX = wrapper.find('.ant-drawer.test_drawer').get(0).props.style.transform; expect(translateX).toBeUndefined(); }); });