ant-design/components/transfer/__tests__/list.test.tsx
WwwHhhYran a3320dde29
Some checks are pending
Publish Any Commit / build (push) Waiting to run
🔀 Sync mirror to Gitee / mirror (push) Waiting to run
✅ test / lint (push) Waiting to run
✅ test / test-react-legacy (16, 1/2) (push) Waiting to run
✅ test / test-react-legacy (16, 2/2) (push) Waiting to run
✅ test / test-react-legacy (17, 1/2) (push) Waiting to run
✅ test / test-react-legacy (17, 2/2) (push) Waiting to run
✅ test / test-node (push) Waiting to run
✅ test / test-react-latest (dom, 1/2) (push) Waiting to run
✅ test / test-react-latest (dom, 2/2) (push) Waiting to run
✅ test / test-react-latest-dist (dist, 1/2) (push) Blocked by required conditions
✅ test / test-react-latest-dist (dist, 2/2) (push) Blocked by required conditions
✅ test / test-react-latest-dist (dist-min, 1/2) (push) Blocked by required conditions
✅ test / test-react-latest-dist (dist-min, 2/2) (push) Blocked by required conditions
✅ test / test-coverage (push) Blocked by required conditions
✅ test / build (push) Waiting to run
✅ test / test lib/es module (es, 1/2) (push) Waiting to run
✅ test / test lib/es module (es, 2/2) (push) Waiting to run
✅ test / test lib/es module (lib, 1/2) (push) Waiting to run
✅ test / test lib/es module (lib, 2/2) (push) Waiting to run
👁️ Visual Regression Persist Start / test image (push) Waiting to run
fix(transfer): transfer operation button should be disabled when all the checked items are disabled (#51784)
2024-12-06 00:06:44 +08:00

122 lines
3.9 KiB
TypeScript

import React from 'react';
import type { KeyWiseTransferItem } from '..';
import { fireEvent, render } from '../../../tests/utils';
import type { TransferListProps } from '../list';
import List from '../list';
const listCommonProps: TransferListProps<KeyWiseTransferItem> = {
prefixCls: 'ant-transfer-list',
dataSource: [
{ key: 'a', title: 'a' },
{ key: 'b', title: 'b' },
{ key: 'c', title: 'c', disabled: true },
],
checkedKeys: ['a'],
notFoundContent: 'Not Found',
} as TransferListProps<KeyWiseTransferItem>;
const listProps: TransferListProps<KeyWiseTransferItem> = {
...listCommonProps,
dataSource: undefined as unknown as KeyWiseTransferItem[],
};
const emptyListProps: TransferListProps<KeyWiseTransferItem> = {
...listCommonProps,
dataSource: [],
};
describe('Transfer.List', () => {
it('should render correctly', () => {
const { container } = render(<List {...listCommonProps} />);
expect(container.firstChild).toMatchSnapshot();
});
it('should check top Checkbox while all available items are checked', () => {
const { container } = render(<List {...listCommonProps} checkedKeys={['a', 'b']} />);
expect(
container.querySelector<HTMLInputElement>('.ant-transfer-list-header input[type="checkbox"]')
?.checked,
).toBeTruthy();
});
it('should render correctly when dataSource is not exists', () => {
expect(() => {
render(<List {...listProps} />);
}).not.toThrow();
});
it('Checkbox should disabled when dataSource is empty', () => {
const { container } = render(<List {...emptyListProps} />);
expect(container.querySelector<HTMLLabelElement>('label.ant-checkbox-wrapper')).toHaveClass(
'ant-checkbox-wrapper-disabled',
);
expect(container.querySelector<HTMLSpanElement>('span.ant-checkbox')).toHaveClass(
'ant-checkbox-disabled',
);
});
it('Checkbox should not disabled when dataSource not is empty', () => {
const { container } = render(<List {...listCommonProps} />);
expect(container.querySelector<HTMLLabelElement>('label.ant-checkbox-wrapper')).not.toHaveClass(
'ant-checkbox-wrapper-disabled',
);
expect(container.querySelector<HTMLSpanElement>('span.ant-checkbox')).not.toHaveClass(
'ant-checkbox-disabled',
);
});
it('should disabled all select checkbox when each item of dataSource is disabled', () => {
const allDisabledListProps: TransferListProps<KeyWiseTransferItem> = {
...listCommonProps,
dataSource: listCommonProps.dataSource.map((d) => ({
...d,
disabled: true,
})),
};
const { container } = render(<List {...allDisabledListProps} />);
expect(container.querySelector<HTMLLabelElement>('label.ant-checkbox-wrapper')).toHaveClass(
'ant-checkbox-wrapper-disabled',
);
expect(container.querySelector<HTMLSpanElement>('span.ant-checkbox')).toHaveClass(
'ant-checkbox-disabled',
);
});
it('support custom dropdown Icon', () => {
const { container } = render(
<List
{...listCommonProps}
selectionsIcon={<span className="test-dropdown-icon">test</span>}
/>,
);
expect(
container?.querySelector<HTMLSpanElement>(
'.ant-transfer-list .ant-transfer-list-header .test-dropdown-icon',
),
).toBeTruthy();
});
it('onItemSelect should be called correctly', () => {
const onItemSelect = jest.fn();
const { container } = render(
<List
{...listCommonProps}
onItemSelect={onItemSelect}
renderList={(props) => (
<div
className="custom-list-body"
onClick={(e) => {
props.onItemSelect('a', false, e);
}}
>
custom list body
</div>
)}
/>,
);
fireEvent.click(container.querySelector('.custom-list-body')!);
expect(onItemSelect).toHaveBeenCalledWith('a', false);
});
});