import React from 'react';
import { ProFormText, 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('ModalForm', () => {
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');
});
await waitForComponentToPaint(wrapper);
expect(fn).toBeCalledWith(true);
});
it('📦 ModalForm 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('📦 ModalForm first render items', async () => {
const fn = jest.fn();
const wrapper = mount(
fn(visible)}
>
,
);
await waitForComponentToPaint(wrapper);
expect(wrapper.find('input#test').exists()).toBeTruthy();
});
it('📦 ModalForm 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('📦 modal 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-modal-close').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(fn).toBeCalledWith(false);
});
it('📦 modal visible=true simulate onVisibleChange', async () => {
const fn = jest.fn();
const wrapper = mount(
新建}
onVisibleChange={(visible) => fn(visible)}
>
,
);
await waitForComponentToPaint(wrapper);
expect(fn).toBeCalledWith(true);
});
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-modal-footer button.ant-btn').at(0).simulate('click');
});
expect(fn).toBeCalledWith(false);
});
it('📦 modal close button will simulate modalProps.onCancel', async () => {
const fn = jest.fn();
const wrapper = mount(
fn(false),
}}
trigger={}
onVisibleChange={(visible) => fn(visible)}
>
,
);
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('button.ant-modal-close').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(fn).toBeCalledWith(false);
});
it('📦 form onFinish return true should close modal', 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 modal', 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('📦 ModalForm support submitter is false', async () => {
const wrapper = mount(
新建} submitter={false}>
,
);
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('button#new').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-modal-footer').length).toBe(0);
});
});