import { mount } from 'enzyme';
import React from 'react';
import {
LightFilter,
ProFormText,
ProFormDatePicker,
ProFormSelect,
ProFormDateRangePicker,
ProFormDateTimePicker,
ProFormTimePicker,
ProFormRadio,
} from '@ant-design/pro-form';
import KeyCode from 'rc-util/lib/KeyCode';
import { act } from 'react-dom/test-utils';
import { waitForComponentToPaint } from '../util';
describe('LightFilter', () => {
it(' 🪕 basic use', async () => {
const onValuesChange = jest.fn();
const onFinish = jest.fn();
const wrapper = mount(
onValuesChange(values)}
>
,
);
expect(wrapper.find('div.ant-col.ant-form-item-control').length).toEqual(2);
expect(wrapper.find('.ant-pro-core-field-label').at(0).text()).toEqual('名称: yutingzhao1991');
expect(wrapper.find('.ant-pro-core-field-label').at(1).text()).toEqual('日期: 2020-08-19');
act(() => {
// click open more drowdown
wrapper.find('.ant-pro-core-field-dropdown-label').at(1).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('div.ant-col.ant-form-item-control').length).toEqual(3);
act(() => {
// change input in drowdown
wrapper.find('.ant-pro-core-field-dropdown-content .ant-input').simulate('change', {
target: {
value: 'new value',
name3: '2020-08-19',
},
});
wrapper.find('.ant-pro-core-dropdown-footer .ant-btn.ant-btn-primary').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(onValuesChange).toHaveBeenCalledWith({
name1: 'yutingzhao1991',
name2: 'new value',
name3: '2020-08-19',
});
expect(onFinish).toHaveBeenCalledWith({
name1: 'yutingzhao1991',
name2: 'new value',
name3: '2020-08-19',
});
act(() => {
// clear input
wrapper.find('.ant-pro-core-field-label .anticon-close').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(onValuesChange).toHaveBeenCalledWith({
name2: 'new value',
name3: '2020-08-19',
});
await waitForComponentToPaint(wrapper);
expect(onFinish).toHaveBeenCalledWith({
name2: 'new value',
name3: '2020-08-19',
});
expect(wrapper.find('div.ant-col.ant-form-item-control').length).toEqual(3);
act(() => {
// change outside input
wrapper.find('.ant-pro-core-field-label').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper
.find('.ant-input')
.at(0)
.simulate('change', {
target: {
value: 'name1 update',
},
});
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-btn.ant-btn-primary').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(onValuesChange).toHaveBeenCalledWith({
name1: 'name1 update',
name2: 'new value',
name3: '2020-08-19',
});
act(() => {
// DatePicker click
wrapper.find('.ant-pro-core-field-label').at(1).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-picker-cell-in-view').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(onFinish).toHaveBeenCalledWith({
name1: 'name1 update',
name2: 'new value',
name3: '2020-08-01',
});
});
it(' 🪕 single select', async () => {
const wrapper = mount(
,
);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称: 杰克2');
expect(wrapper.find('.ant-pro-core-field-label-arrow.anticon-down').length).toEqual(1);
act(() => {
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label-arrow.anticon-down').length).toEqual(1);
act(() => {
wrapper.find('.ant-select-item').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称: 杰克');
act(() => {
// close
wrapper.find('.ant-pro-core-field-label .anticon-close').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称');
act(() => {
wrapper.unmount();
});
});
it(' 🪕 QueryFilter FormItem support footerRender', async () => {
const wrapper = mount(
,
);
expect(wrapper.find('.ant-pro-form-light-filter-effective').length).toEqual(1);
act(() => {
wrapper.find('.ant-pro-form-light-filter-container').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-dropdown-footer').length).toEqual(0);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 QueryFilter FormItem support footer', async () => {
const wrapper = mount(
,
);
act(() => {
wrapper.find('.ant-pro-core-field-label').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-dropdown-footer').length).toEqual(0);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 select showSearch', async () => {
const wrapper = mount(
,
);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称: 杰克2');
expect(wrapper.find('.ant-pro-core-field-label-arrow.anticon-down').length).toEqual(1);
act(() => {
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label-arrow.anticon-down').length).toEqual(1);
act(() => {
wrapper.find('.ant-input').simulate('change', {
target: {
value: 'tech',
},
});
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-select-item').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称: TechUI');
act(() => {
// close
wrapper.find('.ant-pro-core-field-label .anticon-close').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称');
act(() => {
wrapper.unmount();
});
});
it(' 🪕 multiple select showSearch', async () => {
const wrapper = mount(
,
);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('名称: 杰克2');
expect(wrapper.find('.ant-pro-core-field-label-arrow.anticon-down').length).toEqual(1);
act(() => {
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label-arrow.anticon-down').length).toEqual(1);
act(() => {
wrapper.find('.ant-input').simulate('change', {
target: {
value: 'tech',
},
});
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-select-item').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-input').simulate('change', {
target: {
value: 'YES',
},
});
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-select-item').at(0).simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual(
'名称: 杰克2,TechUI,YES这是一个很长很长的测试阿aa阿ABC...3项',
);
act(() => {
// press Backspace
wrapper.find('.ant-input').simulate('keyDown', { which: KeyCode.BACKSPACE });
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual(
'名称: 杰克2,TechUI,YES这是一个很长很长的测试阿aa阿ABC...3项',
);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 DateRangePicker', async () => {
const onFinish = jest.fn();
const wrapper = mount(
,
);
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('日期范围');
act(() => {
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('div.ant-picker-range').simulate('click');
});
await waitForComponentToPaint(wrapper, 100);
act(() => {
wrapper.find('.ant-picker-cell-inner').at(2).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-picker-cell-inner').at(12).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-pro-core-dropdown-footer .ant-btn-primary').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual(
'日期范围: 2016-11-02 ~ 2016-11-12',
);
await waitForComponentToPaint(wrapper);
expect(onFinish).toHaveBeenCalledWith({ date: ['2016-11-02', '2016-11-12'] });
act(() => {
// close
wrapper.find('.ant-pro-core-field-label .anticon-close').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('日期范围');
act(() => {
// 测试第二次再打开的情况
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('div.ant-picker-range').simulate('click');
});
await waitForComponentToPaint(wrapper, 100);
act(() => {
wrapper.find('.ant-picker-cell-inner').at(2).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-picker-cell-inner').at(12).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-pro-core-dropdown-footer .ant-btn-primary').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual(
'日期范围: 2016-11-02 ~ 2016-11-12',
);
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 DateTimePicker', async () => {
const onFinish = jest.fn();
const wrapper = mount(
,
);
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('日期时间');
act(() => {
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-picker-cell-inner').at(5).simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-btn-primary').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual(
'日期时间: 2016-11-05 07:22:44',
);
expect(onFinish).toHaveBeenCalledWith({ datetime: '2016-11-05 07:22:44' });
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 TimePicker', async () => {
const onFinish = jest.fn();
const wrapper = mount(
,
);
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('时间');
act(() => {
wrapper.find('.ant-pro-core-field-label').simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-picker-now-btn').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label').text()).toEqual('时间: 07:22:44');
await waitForComponentToPaint(wrapper);
expect(onFinish).toHaveBeenCalledWith({ time: '07:22:44' });
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 ProFormRadio', async () => {
const onFinish = jest.fn();
const wrapper = mount(
,
);
await waitForComponentToPaint(wrapper, 100);
expect(
wrapper.find('.ant-radio-button-wrapper.ant-radio-button-wrapper-checked').text(),
).toEqual('每季度');
act(() => {
wrapper.find('.ant-radio-button-input').at(3).simulate('change');
});
await waitForComponentToPaint(wrapper, 100);
expect(
wrapper.find('.ant-radio-button-wrapper.ant-radio-button-wrapper-checked').text(),
).toEqual('每年');
expect(onFinish).toHaveBeenCalledWith({ radio: 'yearly' });
act(() => {
wrapper.unmount();
});
});
it(' 🪕 collapse mode', async () => {
const onChange = jest.fn();
const wrapper = mount(
{
onChange(values.name);
}}
collapse
collapseLabel={open
}
initialValues={{
name: ['ant'],
}}
>
,
);
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.collapselabel').text()).toEqual('open');
expect(wrapper.find('.ant-pro-form-light-filter-effective').length).toEqual(1);
act(() => {
wrapper.find('.collapselabel').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-select-selection-item').text()).toEqual('蚂蚁');
act(() => {
// clear
wrapper.find('.ant-btn-link').simulate('click');
});
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.find('.ant-btn-primary').simulate('click');
});
await waitForComponentToPaint(wrapper);
expect(onChange).toHaveBeenCalledWith(undefined);
expect(wrapper.find('.ant-pro-form-light-filter-effective').length).toEqual(0);
await waitForComponentToPaint(wrapper);
act(() => {
wrapper.unmount();
});
});
it(' 🪕 allowClear false', async () => {
const wrapper = mount(
console.log(values)}
>
,
);
await waitForComponentToPaint(wrapper);
expect(wrapper.find('.ant-pro-core-field-label .anticon-close').length).toEqual(0);
act(() => {
wrapper.find('.ant-pro-core-field-label').at(1).simulate('click');
});
await waitForComponentToPaint(wrapper, 100);
expect(wrapper.find('.ant-input').length).toEqual(1);
expect(wrapper.find('.ant-input-suffix .close-circle').length).toEqual(0);
act(() => {
wrapper.unmount();
});
});
});