ant-design/components/radio/__tests__/radio.test.tsx
二货爱吃白萝卜 0e9ac35e3c
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: input work with Upload (#51874)
* fix: input work with Upload

* test: update snapshot
2024-12-03 19:07:28 +08:00

102 lines
2.7 KiB
TypeScript

import React from 'react';
import Radio, { Button, Group } from '..';
import focusTest from '../../../tests/shared/focusTest';
import mountTest from '../../../tests/shared/mountTest';
import rtlTest from '../../../tests/shared/rtlTest';
import { act, fireEvent, render } from '../../../tests/utils';
import Form from '../../form';
describe('Radio', () => {
focusTest(Radio, { refFocus: true });
mountTest(Radio);
mountTest(Group);
mountTest(Button);
rtlTest(Radio);
rtlTest(Group);
rtlTest(Button);
beforeEach(() => {
jest.useFakeTimers();
});
afterEach(() => {
jest.useRealTimers();
});
it('should render correctly', () => {
const { container } = render(<Radio className="customized">Test</Radio>);
expect(container.firstChild).toMatchSnapshot();
});
it('responses hover events', () => {
const onMouseEnter = jest.fn();
const onMouseLeave = jest.fn();
const { container } = render(<Radio onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} />);
fireEvent.mouseEnter(container.querySelector('label')!);
expect(onMouseEnter).toHaveBeenCalled();
fireEvent.mouseLeave(container.querySelector('label')!);
expect(onMouseLeave).toHaveBeenCalled();
});
it('should use own disabled status first', () => {
const { getByRole } = render(
<Form disabled>
<Radio disabled={false} />
</Form>,
);
expect(getByRole('radio')).not.toBeDisabled();
});
it('should obtained correctly disabled status', () => {
const { getByRole } = render(
<Form disabled>
<Radio.Group disabled={false}>
<Radio />
</Radio.Group>
</Form>,
);
expect(getByRole('radio')).not.toBeDisabled();
});
it('have static property for type detecting', () => {
expect(Radio.__ANT_RADIO).toBeTruthy();
});
it('event bubble should not trigger twice', () => {
const onClick = jest.fn();
const onRootClick = jest.fn();
const { container } = render(
<div onClick={onRootClick}>
<Radio onClick={onClick} />
</div>,
);
// Click on label
fireEvent.click(container.querySelector('label')!);
expect(onClick).toHaveBeenCalledTimes(1);
expect(onRootClick).toHaveBeenCalledTimes(1);
act(() => {
jest.runAllTimers();
});
// Click on input
fireEvent.click(container.querySelector('input')!);
expect(onClick).toHaveBeenCalledTimes(2);
expect(onRootClick).toHaveBeenCalledTimes(2);
act(() => {
jest.runAllTimers();
});
// Click on input again
fireEvent.click(container.querySelector('input')!);
expect(onClick).toHaveBeenCalledTimes(3);
expect(onRootClick).toHaveBeenCalledTimes(3);
});
});