2022-05-07 14:31:54 +08:00
|
|
|
import type { RenderOptions } from '@testing-library/react';
|
|
|
|
import { render } from '@testing-library/react';
|
2022-06-28 15:38:30 +08:00
|
|
|
import MockDate from 'mockdate';
|
|
|
|
import type { ReactElement } from 'react';
|
|
|
|
import React, { StrictMode } from 'react';
|
|
|
|
import { act } from 'react-dom/test-utils';
|
2022-06-29 12:07:28 +08:00
|
|
|
import { _rs as onLibResize } from 'rc-resize-observer/lib/utils/observerUtil';
|
|
|
|
import { _rs as onEsResize } from 'rc-resize-observer/es/utils/observerUtil';
|
2018-01-21 01:03:51 +08:00
|
|
|
|
2018-03-12 11:01:49 +08:00
|
|
|
export function setMockDate(dateString = '2017-09-18T03:30:07.795') {
|
2020-05-21 23:27:02 +08:00
|
|
|
MockDate.set(dateString);
|
2018-01-21 01:03:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export function resetMockDate() {
|
|
|
|
MockDate.reset();
|
|
|
|
}
|
2019-07-24 22:56:20 +08:00
|
|
|
|
2020-06-09 18:10:43 +08:00
|
|
|
const globalTimeout = global.setTimeout;
|
|
|
|
|
2020-09-20 21:13:43 +08:00
|
|
|
export const sleep = async (timeout = 0) => {
|
|
|
|
await act(async () => {
|
2021-11-26 15:19:31 +08:00
|
|
|
await new Promise(resolve => {
|
|
|
|
globalTimeout(resolve, timeout);
|
|
|
|
});
|
2020-09-20 21:13:43 +08:00
|
|
|
});
|
|
|
|
};
|
2022-04-18 21:02:11 +08:00
|
|
|
|
|
|
|
const customRender = (ui: ReactElement, options?: Omit<RenderOptions, 'wrapper'>) =>
|
|
|
|
render(ui, { wrapper: StrictMode, ...options });
|
|
|
|
|
2022-06-28 15:38:30 +08:00
|
|
|
export * from '@testing-library/react';
|
2022-04-18 21:02:11 +08:00
|
|
|
export { customRender as render };
|
|
|
|
|
2022-06-02 16:28:22 +08:00
|
|
|
export const triggerResize = (target: Element) => {
|
|
|
|
const originGetBoundingClientRect = target.getBoundingClientRect;
|
|
|
|
|
2022-06-07 21:13:52 +08:00
|
|
|
target.getBoundingClientRect = () => ({ width: 510, height: 903 } as DOMRect);
|
2022-06-29 12:07:28 +08:00
|
|
|
|
|
|
|
act(() => {
|
|
|
|
onLibResize([{ target } as ResizeObserverEntry]);
|
|
|
|
onEsResize([{ target } as ResizeObserverEntry]);
|
|
|
|
});
|
2022-06-02 16:28:22 +08:00
|
|
|
|
|
|
|
target.getBoundingClientRect = originGetBoundingClientRect;
|
2022-06-07 21:13:52 +08:00
|
|
|
};
|
2022-06-02 16:28:22 +08:00
|
|
|
|
2022-06-28 15:38:30 +08:00
|
|
|
export function renderHook<T>(func: () => T): { current: T } {
|
|
|
|
const outerRef = React.createRef<T>();
|
|
|
|
const Demo = React.forwardRef((_, ref: any) => {
|
|
|
|
ref.current = func();
|
|
|
|
return null;
|
|
|
|
});
|
|
|
|
|
|
|
|
render(<Demo ref={outerRef} />);
|
|
|
|
|
|
|
|
return outerRef as any;
|
|
|
|
}
|