From e4a87750ac9096b24a1daa978b1097716cc95425 Mon Sep 17 00:00:00 2001 From: MadCcc <1075746765@qq.com> Date: Fri, 15 Apr 2022 23:33:10 +0800 Subject: [PATCH] test: update test cases to testing-lib (#35056) --- components/form/__tests__/list.test.js | 65 +++++++++---------- .../input-number/__tests__/prefix.test.js | 7 +- components/input/__tests__/index.test.tsx | 38 +++++------ components/input/__tests__/textarea.test.js | 16 +++-- components/radio/__tests__/group.test.js | 11 ++-- .../radio/__tests__/radio-button.test.js | 11 ++-- .../upload/__tests__/uploadlist.test.js | 11 ++-- tests/shared/accessibilityTest.tsx | 6 +- 8 files changed, 81 insertions(+), 84 deletions(-) diff --git a/components/form/__tests__/list.test.js b/components/form/__tests__/list.test.js index 00a1fc408f..a9643c6e98 100644 --- a/components/form/__tests__/list.test.js +++ b/components/form/__tests__/list.test.js @@ -1,5 +1,4 @@ import React from 'react'; -import { mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { render, fireEvent } from '@testing-library/react'; import Form from '..'; @@ -9,16 +8,15 @@ import { sleep } from '../../../tests/utils'; describe('Form.List', () => { async function change(wrapper, index, value) { - wrapper.find(Input).at(index).simulate('change', { target: { value } }); + fireEvent.change(wrapper.getElementsByClassName('ant-input')[index], { target: { value } }); await sleep(); - wrapper.update(); } function testList(name, renderField) { it(name, async () => { jest.useFakeTimers(); - const wrapper = mount( + const { container } = render(
{(fields, { add, remove }) => ( @@ -47,37 +45,35 @@ describe('Form.List', () => { function operate(className) { act(() => { - wrapper.find(className).last().simulate('click'); + fireEvent.click(container.querySelector(className)); jest.runAllTimers(); }); - wrapper.update(); } operate('.add'); - expect(wrapper.find(Input).length).toBe(1); + expect(container.getElementsByClassName('ant-input').length).toBe(1); operate('.add'); - expect(wrapper.find(Input).length).toBe(2); + expect(container.getElementsByClassName('ant-input').length).toBe(2); operate('.add'); - expect(wrapper.find(Input).length).toBe(3); + expect(container.getElementsByClassName('ant-input').length).toBe(3); - await change(wrapper, 2, ''); + await change(container, 2, ''); for (let i = 0; i < 10; i += 1) { act(() => { jest.runAllTimers(); }); } - wrapper.update(); - expect(wrapper.find('.ant-form-item-explain div').length).toBe(1); + expect(container.getElementsByClassName('ant-form-item-explain').length).toBe(1); operate('.remove-0'); - expect(wrapper.find(Input).length).toBe(2); - expect(wrapper.find('.ant-form-item-explain div').length).toBe(1); + expect(container.getElementsByClassName('ant-input').length).toBe(2); + expect(container.getElementsByClassName('ant-form-item-explain').length).toBe(1); operate('.remove-1'); - expect(wrapper.find(Input).length).toBe(1); - expect(wrapper.find('.ant-form-item-explain div').length).toBe(0); + expect(container.getElementsByClassName('ant-input').length).toBe(1); + expect(container.getElementsByClassName('ant-form-item-explain').length).toBe(0); jest.useRealTimers(); }); @@ -99,14 +95,12 @@ describe('Form.List', () => { it('correct onFinish values', async () => { async function click(wrapper, className) { - wrapper.find(className).last().simulate('click'); - await sleep(); - wrapper.update(); + fireEvent.click(wrapper.querySelector(className)); } const onFinish = jest.fn().mockImplementation(() => {}); - const wrapper = mount( + const { container } = render( { if (typeof v.list[0] === 'object') { @@ -139,22 +133,22 @@ describe('Form.List', () => { , ); - await click(wrapper, '.add'); - await change(wrapper, 0, 'input1'); - wrapper.find('form').simulate('submit'); + await click(container, '.add'); + await change(container, 0, 'input1'); + fireEvent.submit(container.querySelector('form')); await sleep(); expect(onFinish).toHaveBeenLastCalledWith({ list: ['input1'] }); - await click(wrapper, '.add'); - await change(wrapper, 1, 'input2'); - await click(wrapper, '.add'); - await change(wrapper, 2, 'input3'); - wrapper.find('form').simulate('submit'); + await click(container, '.add'); + await change(container, 1, 'input2'); + await click(container, '.add'); + await change(container, 2, 'input3'); + fireEvent.submit(container.querySelector('form')); await sleep(); expect(onFinish).toHaveBeenLastCalledWith({ list: ['input1', 'input2', 'input3'] }); - await click(wrapper, '.remove'); // will remove first input - wrapper.find('form').simulate('submit'); + await click(container, '.remove'); // will remove first input + fireEvent.submit(container.querySelector('form')); await sleep(); expect(onFinish).toHaveBeenLastCalledWith({ list: ['input2', 'input3'] }); }); @@ -163,7 +157,7 @@ describe('Form.List', () => { jest.useFakeTimers(); let operation; - const wrapper = mount( + const { container } = render(
{ operation.add(); await sleep(100); jest.runAllTimers(); - wrapper.update(); }); } await addItem(); - expect(wrapper.find('.ant-form-item-explain div').text()).toEqual('At least 2'); + expect(container.querySelector('.ant-form-item-explain div').innerHTML).toEqual('At least 2'); await addItem(); - expect(wrapper.find('.ant-form-item-explain div')).toHaveLength(0); + expect(container.getElementsByClassName('ant-form-item-explain div')).toHaveLength(0); jest.useRealTimers(); }); it('should render empty without errors', () => { - const wrapper = mount(); - expect(wrapper.render()).toMatchSnapshot(); + const { container } = render(); + expect(container.firstChild).toMatchSnapshot(); }); it('no warning when reset in validate', async () => { diff --git a/components/input-number/__tests__/prefix.test.js b/components/input-number/__tests__/prefix.test.js index 7bedc9a60f..a2da7c59c3 100644 --- a/components/input-number/__tests__/prefix.test.js +++ b/components/input-number/__tests__/prefix.test.js @@ -1,5 +1,6 @@ import React from 'react'; import { mount } from 'enzyme'; +import { render } from '@testing-library/react'; import InputNumber from '..'; import focusTest from '../../../tests/shared/focusTest'; @@ -9,9 +10,9 @@ describe('prefix', () => { { refFocus: true }, ); it('should support className when has prefix', () => { - const wrapper = mount(); - expect(wrapper.getDOMNode().className.includes('my-class-name')).toBe(true); - expect(wrapper.find('input').getDOMNode().className.includes('my-class-name')).toBe(false); + const { container } = render(); + expect(container.firstChild.className.includes('my-class-name')).toBe(true); + expect(container.querySelector('input')?.className.includes('my-class-name')).toBe(false); }); it('should trigger focus when prefix is clicked', () => { diff --git a/components/input/__tests__/index.test.tsx b/components/input/__tests__/index.test.tsx index 844f807f9c..33fe8f78f1 100644 --- a/components/input/__tests__/index.test.tsx +++ b/components/input/__tests__/index.test.tsx @@ -88,37 +88,33 @@ describe('Input', () => { describe('prefix and suffix', () => { it('should support className when has suffix', () => { - const wrapper = mount(); - expect(wrapper.getDOMNode().className.includes('my-class-name')).toBe(true); - expect(wrapper.find('input').getDOMNode().className.includes('my-class-name')).toBe(false); + const { container } = render(); + expect((container.firstChild as Element).className.includes('my-class-name')).toBe(true); + expect(container.querySelector('input')?.className.includes('my-class-name')).toBe(false); }); it('should support className when has prefix', () => { - const wrapper = mount(); - expect(wrapper.getDOMNode().className.includes('my-class-name')).toBe(true); - expect(wrapper.find('input').getDOMNode().className.includes('my-class-name')).toBe(false); + const { container } = render(); + expect((container.firstChild as Element).className.includes('my-class-name')).toBe(true); + expect(container.querySelector('input')?.className.includes('my-class-name')).toBe(false); }); it('should support hidden when has prefix or suffix', () => { - const wrapper = mount( + const { container } = render( <> , ); - expect(wrapper.find('.prefix-with-hidden').at(0).getDOMNode().hidden).toBe( - true, - ); - expect(wrapper.find('.suffix-with-hidden').at(0).getDOMNode().hidden).toBe( - true, - ); + expect(container.querySelector('.prefix-with-hidden')?.getAttribute('hidden')).toBe(''); + expect(container.querySelector('.suffix-with-hidden')?.getAttribute('hidden')).toBe(''); }); }); describe('Input setting hidden', () => { it('should support hidden when has prefix or suffix or showCount or allowClear or addonBefore or addonAfter', () => { - const wrapper = mount( + const { container } = render( <> { , ); - expect(wrapper.find('.input').at(0).getDOMNode().hidden).toBe(true); - expect(wrapper.find('.input-search').at(0).getDOMNode().hidden).toBe(true); - expect(wrapper.find('.input-textarea').at(0).getDOMNode().hidden).toBe(true); - expect(wrapper.find('.input-password').at(0).getDOMNode().hidden).toBe(true); + expect(container.querySelector('.input')?.getAttribute('hidden')).toBe(''); + expect(container.querySelector('.input-search')?.getAttribute('hidden')).toBe(''); + expect(container.querySelector('.input-textarea')?.getAttribute('hidden')).toBe(''); + expect(container.querySelector('.input-password')?.getAttribute('hidden')).toBe(''); }); }); @@ -330,9 +326,9 @@ describe('Input allowClear', () => { // https://github.com/ant-design/ant-design/issues/27444 it('should support className', () => { - const wrapper = mount(); - expect(wrapper.getDOMNode().className.includes('my-class-name')).toBe(true); - expect(wrapper.find('input').getDOMNode().className.includes('my-class-name')).toBe(false); + const { container } = render(); + expect((container.firstChild as Element).className.includes('my-class-name')).toBe(true); + expect(container.querySelector('input')?.className.includes('my-class-name')).toBe(false); }); // https://github.com/ant-design/ant-design/issues/31200 diff --git a/components/input/__tests__/textarea.test.js b/components/input/__tests__/textarea.test.js index 7d36cea02a..5650d4f48b 100644 --- a/components/input/__tests__/textarea.test.js +++ b/components/input/__tests__/textarea.test.js @@ -223,12 +223,16 @@ describe('TextArea', () => { ); }); - it('should works same as Input', async () => { - const input = mount(); - const textarea = mount(