test: Replace transfer part test with testing lib (#35216)

* test: Replace transfer part test with testing lib

* chore: clean up
This commit is contained in:
二货机器人 2022-04-24 18:33:57 +08:00 committed by GitHub
parent 43d2265ba2
commit c1831fbf82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
/* eslint no-use-before-define: "off" */ /* eslint no-use-before-define: "off" */
import React from 'react'; import React from 'react';
import { act } from 'react-dom/test-utils'; import { act } from 'react-dom/test-utils';
import { mount } from 'enzyme'; import { render, fireEvent } from '../../../tests/utils';
import Transfer from '..'; import Transfer from '..';
const listProps = { const listProps = {
@ -34,22 +34,29 @@ const listProps = {
}; };
describe('Transfer.Dropdown', () => { describe('Transfer.Dropdown', () => {
function clickItem(wrapper, index) { function clickItem(container: HTMLElement, index: number) {
wrapper.find('li.ant-dropdown-menu-item').at(index).simulate('click'); const items = Array.from(
container
// Menu
.querySelector('.ant-dropdown-menu')!
// Items
.querySelectorAll('li.ant-dropdown-menu-item'),
);
fireEvent.click(items[index]);
} }
it('select all', () => { it('select all', () => {
jest.useFakeTimers(); jest.useFakeTimers();
const onSelectChange = jest.fn(); const onSelectChange = jest.fn();
const wrapper = mount(<Transfer {...listProps} onSelectChange={onSelectChange} />); const { container } = render(<Transfer {...listProps} onSelectChange={onSelectChange} />);
wrapper.find('.ant-transfer-list-header-dropdown').first().simulate('mouseenter');
fireEvent.mouseEnter(container.querySelector('.ant-transfer-list-header-dropdown')!);
act(() => { act(() => {
jest.runAllTimers(); jest.runAllTimers();
}); });
wrapper.update();
clickItem(wrapper.find('.ant-dropdown-menu').first(), 0); clickItem(container, 0);
expect(onSelectChange).toHaveBeenCalledWith(['b', 'c', 'd', 'e'], []); expect(onSelectChange).toHaveBeenCalledWith(['b', 'c', 'd', 'e'], []);
jest.useRealTimers(); jest.useRealTimers();
@ -59,23 +66,24 @@ describe('Transfer.Dropdown', () => {
jest.useFakeTimers(); jest.useFakeTimers();
const onSelectChange = jest.fn(); const onSelectChange = jest.fn();
const wrapper = mount(<Transfer {...listProps} onSelectChange={onSelectChange} />); const { container } = render(<Transfer {...listProps} onSelectChange={onSelectChange} />);
wrapper.find('.ant-transfer-list-header-dropdown').first().simulate('mouseenter'); fireEvent.mouseEnter(container.querySelector('.ant-transfer-list-header-dropdown')!);
act(() => { act(() => {
jest.runAllTimers(); jest.runAllTimers();
}); });
wrapper.update();
clickItem(wrapper.find('.ant-dropdown-menu').first(), 1); clickItem(container, 1);
expect(onSelectChange).toHaveBeenCalledWith(['b', 'c', 'd'], []); expect(onSelectChange).toHaveBeenCalledWith(['b', 'c', 'd'], []);
jest.useRealTimers(); jest.useRealTimers();
}); });
it('should hide checkbox and dropdown icon when showSelectAll={false}', () => { it('should hide checkbox and dropdown icon when showSelectAll={false}', () => {
const wrapper = mount(<Transfer {...listProps} showSelectAll={false} />); const { container } = render(<Transfer {...listProps} showSelectAll={false} />);
expect(wrapper.find('.ant-transfer-list-header-dropdown').length).toBe(0); expect(container.querySelector('.ant-transfer-list-header-dropdown')).toBeFalsy();
expect(wrapper.find('.ant-transfer-list-header .ant-transfer-list-checkbox').length).toBe(0); expect(
container.querySelector('.ant-transfer-list-header .ant-transfer-list-checkbox'),
).toBeFalsy();
}); });
describe('select invert', () => { describe('select invert', () => {
@ -83,7 +91,7 @@ describe('Transfer.Dropdown', () => {
{ name: 'with pagination', props: listProps, index: 2, keys: ['c', 'd'] }, { name: 'with pagination', props: listProps, index: 2, keys: ['c', 'd'] },
{ {
name: 'without pagination', name: 'without pagination',
props: { ...listProps, pagination: null }, props: { ...listProps, pagination: null as any },
index: 1, index: 1,
keys: ['c', 'd', 'e'], keys: ['c', 'd', 'e'],
}, },
@ -92,14 +100,13 @@ describe('Transfer.Dropdown', () => {
jest.useFakeTimers(); jest.useFakeTimers();
const onSelectChange = jest.fn(); const onSelectChange = jest.fn();
const wrapper = mount(<Transfer {...props} onSelectChange={onSelectChange} />); const { container } = render(<Transfer {...props} onSelectChange={onSelectChange} />);
wrapper.find('.ant-transfer-list-header-dropdown').first().simulate('mouseenter'); fireEvent.mouseEnter(container.querySelector('.ant-transfer-list-header-dropdown')!);
act(() => { act(() => {
jest.runAllTimers(); jest.runAllTimers();
}); });
wrapper.update();
clickItem(wrapper.find('.ant-dropdown-menu').first(), index); clickItem(container, index);
expect(onSelectChange).toHaveBeenCalledWith(keys, []); expect(onSelectChange).toHaveBeenCalledWith(keys, []);
jest.useRealTimers(); jest.useRealTimers();
@ -110,22 +117,23 @@ describe('Transfer.Dropdown', () => {
describe('oneWay to remove', () => { describe('oneWay to remove', () => {
[ [
{ name: 'with pagination', props: listProps }, { name: 'with pagination', props: listProps },
{ name: 'without pagination', props: { ...listProps, pagination: null } }, { name: 'without pagination', props: { ...listProps, pagination: null as any } },
].forEach(({ name, props }) => { ].forEach(({ name, props }) => {
it(name, () => { it(name, () => {
jest.useFakeTimers(); jest.useFakeTimers();
const onChange = jest.fn(); const onChange = jest.fn();
const wrapper = mount( const { container } = render(
<Transfer {...props} targetKeys={['b', 'c']} oneWay onChange={onChange} />, <Transfer {...props} targetKeys={['b', 'c']} oneWay onChange={onChange} />,
); );
wrapper.find('.ant-transfer-list-header-dropdown').last().simulate('mouseenter');
// Right dropdown
fireEvent.mouseEnter(container.querySelectorAll('.ant-transfer-list-header-dropdown')[1]!);
act(() => { act(() => {
jest.runAllTimers(); jest.runAllTimers();
}); });
wrapper.update();
clickItem(wrapper.find('.ant-dropdown-menu').first(), 0); clickItem(container, 0);
expect(onChange).toHaveBeenCalledWith([], 'left', ['b', 'c']); expect(onChange).toHaveBeenCalledWith([], 'left', ['b', 'c']);
jest.useRealTimers(); jest.useRealTimers();