Skip to content

Commit b410e39

Browse files
kdbcincothymikee
authored andcommitted
fix: modify *ByType API TS typings to allow required props (#71)
1 parent 3f2fc16 commit b410e39

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

typings/__tests__/index.test.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,15 @@ import {
99
waitForElement,
1010
} from '../..';
1111

12+
interface HasRequiredProp {
13+
requiredProp: string;
14+
}
15+
1216
const View = props => props.children;
1317
const Text = props => props.children;
18+
const ElementWithRequiredProps = (props: HasRequiredProp) => (
19+
<Text>{props.requiredProp}</Text>
20+
);
1421

1522
const TestComponent = () => (
1623
<View>
@@ -24,6 +31,9 @@ const tree = render(<TestComponent />);
2431
const getByNameString: ReactTestInstance = tree.getByName('View');
2532
const getByNameContructor: ReactTestInstance = tree.getByName(View);
2633
const getByType: ReactTestInstance = tree.getByType(View);
34+
const getByTypeWithRequiredProps: ReactTestInstance = tree.getByType(
35+
ElementWithRequiredProps
36+
);
2737
const getByTextString: ReactTestInstance = tree.getByText('<View />');
2838
const getByTextRegExp: ReactTestInstance = tree.getByText(/View/g);
2939
const getByProps: ReactTestInstance = tree.getByProps({ value: 2 });
@@ -33,6 +43,9 @@ const getAllByNameConstructor: Array<ReactTestInstance> = tree.getAllByName(
3343
View
3444
);
3545
const getAllByType: Array<ReactTestInstance> = tree.getAllByType(View);
46+
const getAllByTypeWithRequiredProps: Array<
47+
ReactTestInstance
48+
> = tree.getAllByType(ElementWithRequiredProps);
3649
const getAllByTextString: Array<ReactTestInstance> = tree.getAllByText(
3750
'<View />'
3851
);
@@ -45,6 +58,9 @@ const getAllByProps: Array<ReactTestInstance> = tree.getAllByProps({
4558
const queryByNameString: ReactTestInstance | null = tree.queryByName('View');
4659
const queryByNameConstructor: ReactTestInstance | null = tree.queryByName(View);
4760
const queryByType: ReactTestInstance | null = tree.queryByType(View);
61+
const queryByTypeWithRequiredProps: ReactTestInstance | null = tree.queryByType(
62+
ElementWithRequiredProps
63+
);
4864
const queryByTextString: ReactTestInstance | null = tree.queryByText(
4965
'<View />'
5066
);
@@ -58,6 +74,9 @@ const queryAllByNameConstructor: Array<ReactTestInstance> = tree.getAllByName(
5874
View
5975
);
6076
const queryAllByType: Array<ReactTestInstance> = tree.getAllByType(View);
77+
const queryAllByTypeWithRequiredProps: Array<
78+
ReactTestInstance
79+
> = tree.getAllByType(ElementWithRequiredProps);
6180
const queryAllByTextString: Array<ReactTestInstance> = tree.queryAllByText(
6281
'View'
6382
);

typings/index.d.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,26 @@ import { ReactTestInstance, ReactTestRendererJSON } from 'react-test-renderer';
33

44
export interface GetByAPI {
55
getByName: (name: React.ReactType) => ReactTestInstance;
6-
getByType: (type: React.ComponentType) => ReactTestInstance;
6+
getByType: <P>(type: React.ComponentType<P>) => ReactTestInstance;
77
getByText: (text: string | RegExp) => ReactTestInstance;
88
getByProps: (props: Record<string, any>) => ReactTestInstance;
99
getByTestId: (testID: string) => ReactTestInstance;
1010
getAllByName: (name: React.ReactType) => Array<ReactTestInstance>;
11-
getAllByType: (type: React.ComponentType) => Array<ReactTestInstance>;
11+
getAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;
1212
getAllByText: (text: string | RegExp) => Array<ReactTestInstance>;
1313
getAllByProps: (props: Record<string, any>) => Array<ReactTestInstance>;
1414
}
1515

1616
export interface QueryByAPI {
1717
queryByName: (name: React.ReactType) => ReactTestInstance | null;
18-
queryByType: (type: React.ComponentType) => ReactTestInstance | null;
18+
queryByType: <P>(type: React.ComponentType<P>) => ReactTestInstance | null;
1919
queryByText: (name: string | RegExp) => ReactTestInstance | null;
2020
queryByProps: (props: Record<string, any>) => ReactTestInstance | null;
2121
queryByTestId: (testID: string) => ReactTestInstance | null;
2222
queryAllByName: (name: React.ReactType) => Array<ReactTestInstance> | [];
23-
queryAllByType: (type: React.ComponentType) => Array<ReactTestInstance> | [];
23+
queryAllByType: <P>(
24+
type: React.ComponentType<P>
25+
) => Array<ReactTestInstance> | [];
2426
queryAllByText: (text: string | RegExp) => Array<ReactTestInstance> | [];
2527
queryAllByProps: (
2628
props: Record<string, any>

0 commit comments

Comments
 (0)