Skip to content

Commit 2c096ff

Browse files
feature: export options types and renderHook result type (#1091)
1 parent cb46ae2 commit 2c096ff

File tree

4 files changed

+47
-35
lines changed

4 files changed

+47
-35
lines changed

src/pure.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
import act from './act';
22
import cleanup from './cleanup';
33
import fireEvent from './fireEvent';
4-
import render, { RenderResult } from './render';
4+
import render from './render';
55
import waitFor from './waitFor';
66
import waitForElementToBeRemoved from './waitForElementToBeRemoved';
77
import { within, getQueriesForElement } from './within';
88
import { getDefaultNormalizer } from './matches';
99
import { renderHook } from './renderHook';
1010
import { screen } from './screen';
1111

12-
export type { RenderResult };
13-
export type RenderAPI = RenderResult;
12+
export type {
13+
RenderOptions,
14+
RenderResult,
15+
RenderResult as RenderAPI,
16+
} from './render';
17+
export type { RenderHookOptions, RenderHookResult } from './renderHook';
1418

1519
export { act };
1620
export { cleanup };

src/render.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import debugDeep from './helpers/debugDeep';
88
import { getQueriesForElement } from './within';
99
import { setRenderResult } from './screen';
1010

11-
type Options = {
11+
export type RenderOptions = {
1212
wrapper?: React.ComponentType<any>;
1313
createNodeMock?: (element: React.ReactElement) => any;
1414
};
15+
1516
type TestRendererOptions = {
1617
createNodeMock: (element: React.ReactElement) => any;
1718
};
@@ -24,7 +25,7 @@ export type RenderResult = ReturnType<typeof render>;
2425
*/
2526
export default function render<T>(
2627
component: React.ReactElement<T>,
27-
{ wrapper: Wrapper, createNodeMock }: Options = {}
28+
{ wrapper: Wrapper, createNodeMock }: RenderOptions = {}
2829
) {
2930
const wrap = (innerElement: React.ReactElement) =>
3031
Wrapper ? <Wrapper>{innerElement}</Wrapper> : innerElement;

src/renderHook.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@ import React from 'react';
22
import type { ComponentType } from 'react';
33
import render from './render';
44

5-
interface RenderHookResult<Result, Props> {
5+
export type RenderHookResult<Result, Props> = {
66
rerender: (props: Props) => void;
77
result: { current: Result };
88
unmount: () => void;
9-
}
9+
};
1010

11-
type RenderHookOptions<Props> = Props extends object | string | number | boolean
11+
export type RenderHookOptions<Props> = Props extends
12+
| object
13+
| string
14+
| number
15+
| boolean
1216
? {
1317
initialProps: Props;
1418
wrapper?: ComponentType<any>;

typings/index.flow.js

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ type WaitForOptions = {
6868
interval?: number,
6969
onTimeout?: (error: mixed) => Error,
7070
};
71+
7172
type WaitForFunction = <T = any>(
7273
expectation: () => T,
7374
options?: WaitForOptions
@@ -289,11 +290,6 @@ interface Thenable {
289290
then: (resolve: () => any, reject?: () => any) => any;
290291
}
291292

292-
interface RenderOptions {
293-
wrapper?: React.ComponentType<any>;
294-
createNodeMock?: (element: React.Element<any>) => any;
295-
}
296-
297293
type Debug = {
298294
(message?: string): void,
299295
shallow: (message?: string) => void,
@@ -307,15 +303,6 @@ type Queries = ByTextQueries &
307303
UnsafeByPropsQueries &
308304
A11yAPI;
309305

310-
interface RenderAPI extends Queries {
311-
update(nextElement: React.Element<any>): void;
312-
rerender(nextElement: React.Element<any>): void;
313-
unmount(nextElement?: React.Element<any>): void;
314-
toJSON(): ReactTestRendererJSON[] | ReactTestRendererJSON | null;
315-
debug: Debug;
316-
container: ReactTestInstance;
317-
}
318-
319306
type FireEventFunction = (
320307
element: ReactTestInstance,
321308
eventName: string,
@@ -328,24 +315,29 @@ type FireEventAPI = FireEventFunction & {
328315
scroll: (element: ReactTestInstance, ...data: Array<any>) => any,
329316
};
330317

331-
type RenderHookResult<Result, Props> = {
332-
rerender: (props: Props) => void,
333-
result: { current: Result },
334-
unmount: () => void,
335-
};
336-
337-
type RenderHookOptions<Props> = {
338-
initialProps?: Props,
339-
wrapper?: React.ComponentType<any>,
340-
};
341-
342318
declare module '@testing-library/react-native' {
319+
declare interface RenderResult extends Queries {
320+
update(nextElement: React.Element<any>): void;
321+
rerender(nextElement: React.Element<any>): void;
322+
unmount(nextElement?: React.Element<any>): void;
323+
toJSON(): ReactTestRendererJSON[] | ReactTestRendererJSON | null;
324+
debug: Debug;
325+
container: ReactTestInstance;
326+
}
327+
328+
declare type RenderAPI = RenderResult;
329+
330+
declare interface RenderOptions {
331+
wrapper?: React.ComponentType<any>;
332+
createNodeMock?: (element: React.Element<any>) => any;
333+
}
334+
343335
declare export var render: (
344336
component: React.Element<any>,
345337
options?: RenderOptions
346-
) => RenderAPI;
338+
) => RenderResult;
347339

348-
declare export var screen: RenderAPI;
340+
declare export var screen: RenderResult;
349341

350342
declare export var cleanup: () => void;
351343
declare export var fireEvent: FireEventAPI;
@@ -369,6 +361,17 @@ declare module '@testing-library/react-native' {
369361
normalizerConfig?: NormalizerConfig
370362
) => NormalizerFn;
371363

364+
declare type RenderHookResult<Result, Props> = {
365+
rerender: (props: Props) => void,
366+
result: { current: Result },
367+
unmount: () => void,
368+
};
369+
370+
declare type RenderHookOptions<Props> = {
371+
initialProps?: Props,
372+
wrapper?: React.ComponentType<any>,
373+
};
374+
372375
declare type RenderHookFunction = <Result, Props>(
373376
renderCallback: (props: Props) => Result,
374377
options?: RenderHookOptions<Props>

0 commit comments

Comments
 (0)