import React from 'react'; import { Button, Input } from 'antd'; import ProForm, { ProFormText, ProFormCaptcha, ProFormDatePicker, ProFormDependency, ProFormSelect, ProFormColorPicker, ProFormField, } from '@ant-design/pro-form'; import { act } from 'react-dom/test-utils'; import { FontSizeOutlined } from '@ant-design/icons'; import { mount } from 'enzyme'; import { waitTime, waitForComponentToPaint } from '../util'; describe('ProForm', () => { it('📦 submit props actionsRender=false', async () => { const wrapper = mount(); await waitForComponentToPaint(wrapper); expect(wrapper.render()).toMatchSnapshot(); }); it('📦 ProForm support sync form url', async () => { const fn = jest.fn(); const wrapper = mount<{ navTheme: string }>( { fn(values.navTheme); }} syncToUrl > , }} name="navTheme" /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toHaveBeenCalledWith('realDark'); act(() => { wrapper.find('button.ant-btn').at(1).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toHaveBeenCalledWith('realDark'); }); it('📦 ProForm support sync form url', async () => { const fn = jest.fn(); const wrapper = mount<{ navTheme: string }>( { fn(values.navTheme); }} syncToUrl syncToInitialValues={false} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toHaveBeenCalledWith('realDark'); act(() => { wrapper.find('button.ant-btn').at(1).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toHaveBeenCalledWith(undefined); }); it('📦 onFinish should simulate button loading', async () => { const fn = jest.fn(); const wrapper = mount( { fn(); await waitTime(2000); }} />, ); await waitForComponentToPaint(wrapper, 200); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper, 200); expect(wrapper.find('.ant-btn-loading').exists()).toBe(true); expect(fn).toBeCalled(); }); it('📦 onFinish should simulate button close loading', async () => { const fn = jest.fn(); const wrapper = mount( { fn(); await waitTime(1000); throw new Error('期贤'); }} />, ); await waitForComponentToPaint(wrapper, 200); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper, 200); expect(wrapper.find('.ant-btn-loading').exists()).toBe(true); expect(fn).toBeCalled(); await waitForComponentToPaint(wrapper, 1000); expect(wrapper.find('.ant-btn-loading').exists()).toBe(false); }); it('📦 submit props actionsRender=()=>false', async () => { const wrapper = mount( false, }} />, ); await waitForComponentToPaint(wrapper); expect(wrapper.render()).toMatchSnapshot(); }); it('📦 submit props actionsRender is one', async () => { const wrapper = mount( [test], }} />, ); await waitForComponentToPaint(wrapper); expect(wrapper.render()).toMatchSnapshot(); }); it('📦 ProForm support namePath is array', async () => { const fn = jest.fn(); const wrapper = mount( { fn(params); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('keypress', { key: 'Enter', }); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith({ name: { test: 'test', }, test: 'test2', }); }); it('📦 ProForm support enter submit', async () => { const fn = jest.fn(); const wrapper = mount( { fn(); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button.ant-btn-primary').simulate('keypress', { key: 'Enter', }); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalled(); }); it('📦 submit props actionsRender=false', async () => { const wrapper = mount( , ); await waitForComponentToPaint(wrapper); expect(wrapper.render()).toMatchSnapshot(); }); it('📦 submit props actionsRender=()=>[]', async () => { const wrapper = mount( [], }} />, ); await waitForComponentToPaint(wrapper); expect(wrapper.render()).toMatchSnapshot(); }); it('📦 submit props render=()=>[]', async () => { const wrapper = mount( [ , ], }} />, ); await waitForComponentToPaint(wrapper); expect(wrapper.render()).toMatchSnapshot(); }); it('📦 submitter props support submitButtonProps', async () => { const fn = jest.fn(); const wrapper = mount( { fn(); }, }, }} />, ); await waitForComponentToPaint(wrapper); act(() => { expect(wrapper.render()).toMatchSnapshot(); }); act(() => { wrapper.find('button.test_button').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalled(); }); it('📦 submitter props support resetButtonProps', async () => { const fn = jest.fn(); const wrapper = mount( { fn(); }, }, }} />, ); await waitForComponentToPaint(wrapper); act(() => { expect(wrapper.render()).toMatchSnapshot(); }); act(() => { wrapper.find('button.test_button').simulate('click'); }); expect(fn).toBeCalled(); }); it('📦 submitter.render simulate onFinish', async () => { const onFinish = jest.fn(); const wrapper = mount( [ , ], }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('button#submit').simulate('click'); }); await waitForComponentToPaint(wrapper, 100); expect(onFinish).toBeCalled(); }); it('📦 ProFormCaptcha support onGetCaptcha', async () => { const wrapper = mount( { await waitTime(10); }} captchaProps={{ id: 'test', }} countDown={2} label="name" name="name" /> , ); await waitForComponentToPaint(wrapper); expect(wrapper.find('Button#test').text()).toBe('获取验证码'); act(() => { wrapper.find('Button#test').simulate('click'); }); await waitForComponentToPaint(wrapper, 100); expect(wrapper.find('button#test').text()).toBe('2 秒后重新获取'); await waitForComponentToPaint(wrapper, 1200); expect(wrapper.find('button#test').text()).toBe('1 秒后重新获取'); await waitForComponentToPaint(wrapper, 2000); expect(wrapper.find('Button#test').text()).toBe('获取验证码'); }); it('📦 ProFormCaptcha support value and onchange', async () => { const onFinish = jest.fn(); const wrapper = mount( onFinish(values.name)}> { await waitTime(10); }} countDown={2} label="name" name="name" /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('input#name').simulate('change', { target: { value: 'test', }, }); }); await waitForComponentToPaint(wrapper, 100); act(() => { wrapper.find('button.ant-btn-primary').simulate('click'); }); await waitForComponentToPaint(wrapper, 100); expect(onFinish).toBeCalledWith('test'); }); it('📦 ProFormCaptcha support captchaTextRender', async () => { const wrapper = mount( { await waitTime(10); }} captchaTextRender={(timing) => (timing ? '重新获取' : '获取')} captchaProps={{ id: 'test', }} label="name" name="name" /> , ); await waitForComponentToPaint(wrapper); expect(wrapper.find('Button#test').text()).toBe('获 取'); act(() => { wrapper.find('Button#test').simulate('click'); }); await waitForComponentToPaint(wrapper, 100); expect(wrapper.find('button#test').text()).toBe('重新获取'); }); it('📦 ProFormCaptcha onGetCaptcha throw error', async () => { const wrapper = mount( { await waitTime(10); throw new Error('TEST'); }} captchaTextRender={(timing) => (timing ? '重新获取' : '获取')} captchaProps={{ id: 'test', }} label="name" name="name" /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('Button#test').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('button#test').text()).toBe('获 取'); }); it('📦 ProFormCaptcha onGetCaptcha support rules', async () => { const fn = jest.fn(); const wrapper = mount( { fn(); await waitTime(10); }} phoneName="phone" captchaProps={{ id: 'test', }} label="name" name="name" /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('Button#test').simulate('click'); }); expect(fn).not.toBeCalled(); act(() => { wrapper .find('input') .at(1) .simulate('change', { target: { value: 'tech', }, }); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('Button#test').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalled(); }); it('📦 ProFormDependency', async () => { const onFinish = jest.fn(); const wrapper = mount( {/* ProFormDependency 会自动注入并且 进行 shouldUpdate 的比对 */} {(values) => { return ( {`与《${values?.name || ''}》 与 《${ values?.name2?.text || '' }》合同约定生效方式`} } /> ); }} , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('input#name').simulate('change', { target: { value: 'test', }, }); }); act(() => { wrapper.find('input#name2_text').simulate('change', { target: { value: 'test2', }, }); }); expect(wrapper.find('span#label_text').text()).toBe('与《test》 与 《test2》合同约定生效方式'); }); it('📦 ProForm.Group support collapsible', async () => { const fn = jest.fn(); const wrapper = mount( fn(c)}> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-pro-form-group-title').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(true); act(() => { wrapper.find('.ant-pro-form-group-title').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); }); it('📦 ProForm.Group support defaultCollapsed', async () => { const fn = jest.fn(); const wrapper = mount( fn(c)}> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-pro-form-group-title').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(false); act(() => { wrapper.find('.ant-pro-form-group-title').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).toBeCalledWith(true); }); it('📦 ProForm.Group support defaultCollapsed', async () => { const fn = jest.fn(); const wrapper = mount( 点击} onCollapse={(c) => fn(c)} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('#click').simulate('click'); }); await waitForComponentToPaint(wrapper); expect(fn).not.toBeCalled(); }); it('📦 ProForm.Group support FormItem hidden', async () => { const wrapper = mount( , ); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-pro-form-group-container div.ant-form-item').length).toBe(1); expect(wrapper.find('.ant-pro-form-group-container div.ant-space-item').length).toBe(2); }); it('📦 ProFormField support onChange', async () => { const fn = jest.fn(); const wrapper = mount( , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('Input#testInput').simulate('change', { target: { value: 'test', }, }); }); expect(fn).toBeCalled(); }); it('📦 DatePicker', async () => { const onFinish = jest.fn(); const wrapper = mount( , ); act(() => { wrapper.find('.ant-picker-cell').at(2).simulate('click'); }); act(() => { wrapper.find('.ant-btn-primary').simulate('submit'); }); await waitForComponentToPaint(wrapper); expect(onFinish).toHaveBeenCalledWith({ date: '2020-09-02', dateWeek: '2020-37th', dateMonth: '2020-09', dateQuarter: '2020-Q2', }); }); it('📦 SearchSelect onSearch support', async () => { const onSearch = jest.fn(); const wrapper = mount( onSearch(e), }} options={[ { label: '全部', value: 'all' }, { label: '未解决', value: 'open' }, { label: '已解决', value: 'closed' }, { label: '解决中', value: 'processing' }, ]} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); }); it('📦 SearchSelect onSearch support valueEnum', async () => { const onSearch = jest.fn(); const wrapper = mount( onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); }); it('📦 SearchSelect onSearch support valueEnum clear', async () => { const onSearch = jest.fn(); const onValuesChange = jest.fn(); const wrapper = mount( { // {"disabled": undefined, "key": "all", "label": "全部", "value": "all"} onValuesChange(values.userQuery[0].label); }} > onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); act(() => { wrapper.find('.ant-select-item').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(onValuesChange).toBeCalledWith('全部'); }); it('📦 SearchSelect onSearch support valueEnum clear item filter', async () => { const onSearch = jest.fn(); const wrapper = mount( onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(1); act(() => { wrapper.find('.ant-select-selector').simulate('focus'); wrapper.update(); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(4); }); it('📦 SearchSelect support onClear', async () => { const onSearch = jest.fn(); const wrapper = mount( console.log(e)}> onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(1); act(() => { wrapper.find('.ant-select-item-option-content div span').simulate('click'); wrapper.update(); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select').simulate('mouseenter'); wrapper.update(); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('span.ant-select-clear').last().simulate('mousedown'); }); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(4); }); it('📦 SearchSelect support searchOnFocus', async () => { const onSearch = jest.fn(); const wrapper = mount( onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(1); act(() => { wrapper.find('.ant-select-selector').simulate('focus'); wrapper.update(); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(4); }); it('📦 SearchSelect support resetAfterSelect', async () => { const onSearch = jest.fn(); const wrapper = mount( onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '全', }, }); }); await waitForComponentToPaint(wrapper); expect(onSearch).toBeCalledWith('全'); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item').length).toBe(1); expect(wrapper.find('.ant-select-item-option-content div span').text()).toBe('全'); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); // 选中第一个 act(() => { wrapper.find('.ant-select-item').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); expect(wrapper.find('.ant-select-item').length).toBe(4); }); it('📦 SearchSelect support multiple', async () => { const onSearch = jest.fn(); const onFinish = jest.fn(); const wrapper = mount( { onFinish(values?.userQuery?.length); }} > onSearch(e), }} valueEnum={{ all: { text: '全部', status: 'Default' }, open: { text: '未解决', status: 'Error', }, closed: { text: '已解决', status: 'Success', }, processing: { text: '解决中', status: 'Processing', }, }} /> , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); // 选中第一个 act(() => { wrapper.find('.ant-select-item').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); // 选中第二个 act(() => { wrapper.find('.ant-select-item').at(1).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-btn-primary').simulate('submit'); }); await waitForComponentToPaint(wrapper); expect(onFinish).toBeCalledWith(2); }); it('📦 SearchSelect filter support optionGroup', async () => { const onValuesChange = jest.fn(); const wrapper = mount( { onValuesChange(values?.userQuery[0].value); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '门', }, }); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').at(0).text()).toBe('门'); // 应该有两个 item 被筛选出来 expect(wrapper.find('div.ant-select-item.ant-select-item-option').length).toBe(2); act(() => { wrapper.find('.ant-select-item.ant-select-item-option').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(onValuesChange).toBeCalledWith('门店小程序'); // 应该有两个 item 被筛选出来 expect(wrapper.find('div.ant-select-item.ant-select-item-option').length).toBe(4); }); it('📦 SearchSelect filter support (', async () => { const onValuesChange = jest.fn(); const wrapper = mount( { onValuesChange(values?.userQuery[0].value); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selection-search-input').simulate('change', { target: { value: '(测试)', }, }); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); expect(wrapper.find('.ant-select-item-option-content div span').at(0).text()).toBe('(测试)'); // 应该有两个 item 被筛选出来 expect(wrapper.find('div.ant-select-item.ant-select-item-option').length).toBe(1); act(() => { wrapper.find('.ant-select-item.ant-select-item-option').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); expect(onValuesChange).toBeCalledWith('门店小程序'); // 应该有两个 item 被筛选出来 expect(wrapper.find('div.ant-select-item.ant-select-item-option').length).toBe(4); }); it('📦 Select support singe', async () => { const onFinish = jest.fn(); const wrapper = mount( { onFinish(values?.userQuery); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); // 选中第一个 act(() => { wrapper.find('.ant-select-item').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); // 选中第二个 act(() => { wrapper.find('.ant-select-item').at(1).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-btn-primary').simulate('submit'); }); await waitForComponentToPaint(wrapper); expect(onFinish).toBeCalledWith('open'); }); it('📦 Select support labelInValue singe', async () => { const onFinish = jest.fn(); const wrapper = mount( { onFinish(values?.userQuery.value); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); await waitForComponentToPaint(wrapper); // 选中第一个 act(() => { wrapper.find('.ant-select-item').at(0).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); wrapper.update(); }); // 选中第二个 act(() => { wrapper.find('.ant-select-item').at(1).simulate('click'); }); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-btn-primary').simulate('submit'); }); await waitForComponentToPaint(wrapper); expect(onFinish).toBeCalledWith('open'); }); it('📦 ColorPicker support rgba', async () => { const onFinish = jest.fn(); const wrapper = mount( { onFinish(values?.color); }} > , ); await waitForComponentToPaint(wrapper); act(() => { wrapper.find('.ant-pro-field-color-picker').simulate('click'); wrapper.update(); }); await waitForComponentToPaint(wrapper); // 选中第一个 act(() => { wrapper.find('.flexbox-fix').at(2).find('div span div').at(2).simulate('click'); }); await waitForComponentToPaint(wrapper, 100); expect(onFinish).toBeCalledWith('#5b8ff9'); act(() => { wrapper.find('#rc-editable-input-5').simulate('change', { target: { value: 2, }, }); }); await waitForComponentToPaint(wrapper, 100); expect(onFinish).toBeCalledWith('rgba(91, 143, 249, 0.02)'); }); });