import React from 'react'; import { ProFormText, DrawerForm, ModalForm } from '@ant-design/pro-form'; import { Button } from 'antd'; import { act } from 'react-dom/test-utils'; import { mount } from 'enzyme'; import { waitForComponentToPaint } from '../util'; describe('DrawerForm', () => { it('📦 trigger will simulate onVisibleChange', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button#new').simulate('click'); }); act(() => { wrapper.unmount(); }); expect(fn).toBeCalledWith(true); }); it('📦 DrawerForm first no render items', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); expect(wrapper.find('input#test').exists()).toBeFalsy(); act(() => { wrapper.find('button#new').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('input#test').exists()).toBeTruthy(); }); it('📦 DrawerForm first render items', async () => { const fn = jest.fn(); const wrapper = mount( fn(visible)} > , ); await waitForComponentToPaint(wrapper); expect(wrapper.find('input#test').exists()).toBeTruthy(); }); it('📦 DrawerForm destroyOnClose', async () => { const fn = jest.fn(); const wrapper = mount( fn(visible)} > , ); await waitForComponentToPaint(wrapper); expect(wrapper.find('input#test').exists()).toBeFalsy(); act(() => { wrapper.setProps({ visible: true, }); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('input#test').exists()).toBeTruthy(); act(() => { wrapper.setProps({ visible: false, }); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('input#test').exists()).toBeFalsy(); }); it('📦 drawer close button will simulate onVisibleChange', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-drawer-close').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 drawer close button will simulate onVisibleChange', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-drawer-close').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 reset button will simulate onVisibleChange', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-drawer-footer button.ant-btn').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 drawer close button will simulate drawerProps.onClose', async () => { const fn = jest.fn(); const wrapper = mount( fn(false), }} trigger={} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-drawer-close').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 drawer reset button will simulate drawerProps.onClose', async () => { const fn = jest.fn(); const wrapper = mount( fn(false), }} trigger={} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn').at(0).simulate('click'); }); expect(fn).toBeCalledWith(false); }); it('📦 drawer reset button will simulate drawerProps.onCancel', async () => { const fn = jest.fn(); const wrapper = mount( fn(false), }} trigger={} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 form onFinish return true should close drawer', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} onFinish={async () => true} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 form onFinish is null, no close drawer', async () => { const fn = jest.fn(); const wrapper = mount( 新建} onVisibleChange={(visible) => fn(visible)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledTimes(1); }); it('📦 getContainer is function', async () => { const ref = React.createRef(); const wrapper = mount(
ref.current!, }} trigger={ } >
, ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#new').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('#render-form').render().find('.ant-form').length).toBe(1); }); it('📦 getContainer is string', async () => { const ref = React.createRef(); document.getElementById = () => ref.current; const wrapper = mount(
新建 } >
, ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#new').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('#render-form').render().find('.ant-form').length).toBe(1); }); it('📦 getContainer is element', async () => { const ref = React.createRef(); const Demo = () => (
新建 } >
); const wrapper = mount(); wrapper.setProps({ id: '1212', }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#new').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('#render-form').render().find('.ant-form').length).toBe(1); }); it('📦 ModalForm getContainer is function', async () => { const ref = React.createRef(); const wrapper = mount(
ref.current!, }} trigger={ } >
, ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#new').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('#render-form').render().find('.ant-form').length).toBe(1); act(() => { wrapper.unmount(); }); }); it('📦 ModalForm getContainer is string', async () => { const ref = React.createRef(); document.getElementById = () => ref.current; const wrapper = mount(
新建 } >
, ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#new').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('#render-form').render().find('.ant-form').length).toBe(1); }); it('📦 ModalForm getContainer is element', async () => { const ref = React.createRef(); const Demo = () => (
新建 } >
); const wrapper = mount(); wrapper.setProps({ id: '1212', }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#new').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('#render-form').render().find('.ant-form').length).toBe(1); }); });