Skip to content

Commit bf2271d

Browse files
thymikeeEsemesek
authored andcommittedNov 29, 2018
fix: add errors for queryBy* helpers when more instances found (#79)
1 parent 2981dfe commit bf2271d

File tree

2 files changed

+47
-44
lines changed

2 files changed

+47
-44
lines changed
 

‎src/__tests__/render.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ test('getByText, queryByText', () => {
124124

125125
expect(queryByText(/change/i)).toBe(button);
126126
expect(queryByText('InExistent')).toBeNull();
127+
expect(() => queryByText(/fresh/)).toThrow('Expected 1 but found 3');
127128
});
128129

129130
test('getAllByText, queryAllByText', () => {

‎src/helpers/queryByAPI.js

+46-44
Original file line numberDiff line numberDiff line change
@@ -11,58 +11,60 @@ import {
1111
getAllByText,
1212
getAllByProps,
1313
} from './getByAPI';
14-
import { logDeprecationWarning } from './errors';
14+
import { ErrorWithStack, logDeprecationWarning } from './errors';
1515

16-
export const queryByName = (instance: ReactTestInstance) => (
17-
name: string | React.ComponentType<*>
18-
) => {
19-
logDeprecationWarning('queryByName', 'getByName');
20-
try {
21-
return getByName(instance)(name);
22-
} catch (error) {
16+
const createQueryByError = (error: Error, callsite: Function) => {
17+
if (error.message.includes('No instances found')) {
2318
return null;
2419
}
20+
throw new ErrorWithStack(error.message, callsite);
2521
};
2622

27-
export const queryByType = (instance: ReactTestInstance) => (
28-
type: React.ComponentType<*>
29-
) => {
30-
try {
31-
return getByType(instance)(type);
32-
} catch (error) {
33-
return null;
34-
}
35-
};
23+
export const queryByName = (instance: ReactTestInstance) =>
24+
function queryByNameFn(name: string | React.ComponentType<*>) {
25+
logDeprecationWarning('queryByName', 'getByName');
26+
try {
27+
return getByName(instance)(name);
28+
} catch (error) {
29+
return createQueryByError(error, queryByNameFn);
30+
}
31+
};
3632

37-
export const queryByText = (instance: ReactTestInstance) => (
38-
text: string | RegExp
39-
) => {
40-
try {
41-
return getByText(instance)(text);
42-
} catch (error) {
43-
return null;
44-
}
45-
};
33+
export const queryByType = (instance: ReactTestInstance) =>
34+
function queryByTypeFn(type: React.ComponentType<*>) {
35+
try {
36+
return getByType(instance)(type);
37+
} catch (error) {
38+
return createQueryByError(error, queryByTypeFn);
39+
}
40+
};
4641

47-
export const queryByProps = (instance: ReactTestInstance) => (props: {
48-
[propName: string]: any,
49-
}) => {
50-
try {
51-
return getByProps(instance)(props);
52-
} catch (error) {
53-
return null;
54-
}
55-
};
42+
export const queryByText = (instance: ReactTestInstance) =>
43+
function queryByTextFn(text: string | RegExp) {
44+
try {
45+
return getByText(instance)(text);
46+
} catch (error) {
47+
return createQueryByError(error, queryByTextFn);
48+
}
49+
};
5650

57-
export const queryByTestId = (instance: ReactTestInstance) => (
58-
testID: string
59-
) => {
60-
try {
61-
return getByTestId(instance)(testID);
62-
} catch (error) {
63-
return null;
64-
}
65-
};
51+
export const queryByProps = (instance: ReactTestInstance) =>
52+
function queryByPropsFn(props: { [propName: string]: any }) {
53+
try {
54+
return getByProps(instance)(props);
55+
} catch (error) {
56+
return createQueryByError(error, queryByPropsFn);
57+
}
58+
};
59+
60+
export const queryByTestId = (instance: ReactTestInstance) =>
61+
function queryByTestIdFn(testID: string) {
62+
try {
63+
return getByTestId(instance)(testID);
64+
} catch (error) {
65+
return createQueryByError(error, queryByTestIdFn);
66+
}
67+
};
6668

6769
export const queryAllByName = (instance: ReactTestInstance) => (
6870
name: string | React.ComponentType<*>

0 commit comments

Comments
 (0)
Please sign in to comment.