mirror of
https://github.com/ant-design/ant-design.git
synced 2025-01-23 01:45:05 +08:00
45eeee60bb
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
* chore: add unstable entrance * chore: rest of it * chore: use React 19 * chore: fix lint * chore: fix lint * chore: fix lint * chore: fix lint * chore: fix lint * chore: fix lint * chore: fix lint * chore: test ignore 19 preload * chore: bump rc-util * fix: warning of pure render * fix: warning of 19 * chore: adjust ts * test: fix test logic * test: fix test case * test: fix test case * test: fix test case * test: fix test case * test: fix test case * test: fix test case * test: fix test case * test: fix test case * chore: restore file * test: fix test case * test: fix test case * test: fix test case * test: fix test case * test: fix test case * test: update test * test: fix test case * test: update snapshot * test: fix coverage * test: fix coverage * test: add ignore image
105 lines
2.6 KiB
TypeScript
105 lines
2.6 KiB
TypeScript
import type { ReactElement } from 'react';
|
|
import React, { createRef, StrictMode } from 'react';
|
|
import type { RenderOptions } from '@testing-library/react';
|
|
import { act, render } from '@testing-library/react';
|
|
import MockDate from 'mockdate';
|
|
import { _rs as onEsResize } from 'rc-resize-observer/es/utils/observerUtil';
|
|
import { _rs as onLibResize } from 'rc-resize-observer/lib/utils/observerUtil';
|
|
|
|
export function assertsExist<T>(item?: T): asserts item is T {
|
|
expect(item).not.toBeUndefined();
|
|
expect(item).not.toBeNull();
|
|
}
|
|
|
|
export function setMockDate(dateString = '2017-09-18T03:30:07.795') {
|
|
MockDate.set(dateString);
|
|
}
|
|
|
|
export function resetMockDate() {
|
|
MockDate.reset();
|
|
}
|
|
|
|
const globalTimeout = global.setTimeout;
|
|
|
|
export const sleep = async (timeout = 0) => {
|
|
await act(async () => {
|
|
await new Promise((resolve) => {
|
|
globalTimeout(resolve, timeout);
|
|
});
|
|
});
|
|
};
|
|
|
|
const customRender = (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) =>
|
|
render(ui, { wrapper: StrictMode, ...options });
|
|
|
|
export function renderHook<T>(func: () => T): { result: React.RefObject<T | null> } {
|
|
const result = createRef<T>();
|
|
|
|
const Demo: React.FC = () => {
|
|
(result as any).current = func();
|
|
|
|
return null;
|
|
};
|
|
|
|
customRender(<Demo />);
|
|
|
|
return { result };
|
|
}
|
|
|
|
/**
|
|
* Pure render like `@testing-lib` render which will not wrap with StrictMode.
|
|
*
|
|
* Please only use with render times times of memo usage case.
|
|
*/
|
|
const pureRender = render;
|
|
|
|
export { pureRender, customRender as render };
|
|
|
|
export const triggerResize = (target: Element) => {
|
|
const originGetBoundingClientRect = target.getBoundingClientRect;
|
|
|
|
target.getBoundingClientRect = () => ({ width: 510, height: 903 }) as DOMRect;
|
|
|
|
act(() => {
|
|
onLibResize([{ target } as ResizeObserverEntry]);
|
|
onEsResize([{ target } as ResizeObserverEntry]);
|
|
});
|
|
|
|
target.getBoundingClientRect = originGetBoundingClientRect;
|
|
};
|
|
|
|
/**
|
|
* Wait for a time delay. Will wait `advanceTime * times` ms.
|
|
*
|
|
* @param advanceTime Default 1000
|
|
* @param times Default 20
|
|
*/
|
|
export async function waitFakeTimer(advanceTime = 1000, times = 20) {
|
|
for (let i = 0; i < times; i += 1) {
|
|
await act(async () => {
|
|
await Promise.resolve();
|
|
|
|
if (advanceTime > 0) {
|
|
jest.advanceTimersByTime(advanceTime);
|
|
} else {
|
|
jest.runAllTimers();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Same as `waitFakeTimer` but to resolve React 19.
|
|
* `act` warning
|
|
*/
|
|
export async function waitFakeTimer19(advanceTime = 1000) {
|
|
await act(async () => {
|
|
await Promise.resolve();
|
|
});
|
|
await act(async () => {
|
|
jest.advanceTimersByTime(advanceTime);
|
|
});
|
|
}
|
|
|
|
export * from '@testing-library/react';
|