Skip to content

Commit f4b999a

Browse files
committed
Feat Review fixes
1 parent 404b4dd commit f4b999a

File tree

6 files changed

+54
-58
lines changed

6 files changed

+54
-58
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ test('Component has a structure', () => {
148148
});
149149
```
150150

151+
## `fireEvent`
152+
153+
### press
154+
155+
Invokes `press` event on the element or parent element
156+
151157
## `debug`
152158

153159
Log prettified shallowly rendered component or test instance (just like snapshot) to stdout.

src/__mocks__/reactNativeMock.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// @flow
2+
export const View = (props: *) => props.children;
3+
export const ScrollView = (props: *) => props.children;
4+
export const Text = (props: *) => props.children;
5+
export const TextInput = () => null;
6+
export const TouchableOpacity = (props: *) => props.children;

src/__tests__/fireEvent.test.js

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
Text,
66
ScrollView,
77
TextInput,
8-
} from 'react-native'; // eslint-disable-line import/no-unresolved
8+
} from '../__mocks__/reactNativeMock';
99
import fireEvent from '../fireEvent';
1010
import { render } from '..';
1111

@@ -29,34 +29,12 @@ const CustomEventComponent = ({ onCustomEvent }) => (
2929
</TouchableOpacity>
3030
);
3131

32-
jest.mock(
33-
'react-native',
34-
() => ({
35-
View(props) {
36-
return props.children;
37-
},
38-
ScrollView(props) {
39-
return props.children;
40-
},
41-
Text(props) {
42-
return props.children;
43-
},
44-
TextInput() {
45-
return null;
46-
},
47-
TouchableOpacity(props) {
48-
return props.children;
49-
},
50-
}),
51-
{ virtual: true }
52-
);
53-
54-
describe('fireEvent.invokeEvent', () => {
32+
describe('fireEvent', () => {
5533
test('should invoke specified event', () => {
5634
const onPressMock = jest.fn();
5735
const { getByTestId } = render(<OnPressComponent onPress={onPressMock} />);
5836

59-
fireEvent.invokeEvent(getByTestId('button'), 'press');
37+
fireEvent(getByTestId('button'), 'press');
6038

6139
expect(onPressMock).toHaveBeenCalled();
6240
});
@@ -65,17 +43,17 @@ describe('fireEvent.invokeEvent', () => {
6543
const onPressMock = jest.fn();
6644
const { getByTestId } = render(<OnPressComponent onPress={onPressMock} />);
6745

68-
fireEvent.invokeEvent(getByTestId('text-button'), 'press');
46+
fireEvent(getByTestId('text-button'), 'press');
6947

7048
expect(onPressMock).toHaveBeenCalled();
7149
});
7250

7351
test('should throw an Error when event handler was not found', () => {
7452
const { getByTestId } = render(<WithoutEventComponent />);
7553

76-
expect(() =>
77-
fireEvent.invokeEvent(getByTestId('text'), 'press')
78-
).toThrowError('No handler function found for event: press');
54+
expect(() => fireEvent(getByTestId('text'), 'press')).toThrowError(
55+
'No handler function found for event: press'
56+
);
7957
});
8058

8159
test('should invoke event with custom name', () => {
@@ -88,7 +66,7 @@ describe('fireEvent.invokeEvent', () => {
8866
</View>
8967
);
9068

91-
fireEvent.invokeEvent(getByTestId('custom'), 'customEvent', EVENT_DATA);
69+
fireEvent(getByTestId('custom'), 'customEvent', EVENT_DATA);
9270

9371
expect(handlerMock).toHaveBeenCalledWith(EVENT_DATA);
9472
});

src/__tests__/render.test.js

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
/* eslint-disable react/no-multi-comp */
22
import React from 'react';
3-
import { View, Text, TouchableOpacity } from 'react-native'; // eslint-disable-line import/no-unresolved
3+
import { View, Text, TouchableOpacity } from '../__mocks__/reactNativeMock';
44
import { render } from '..';
55

6-
jest.mock(
7-
'react-native',
8-
() => ({
9-
View(props) {
10-
return props.children;
11-
},
12-
Text(props) {
13-
return props.children;
14-
},
15-
TouchableOpacity(props) {
16-
return props.children;
17-
},
18-
}),
19-
{ virtual: true }
20-
);
21-
226
class Button extends React.Component {
237
render() {
248
return (

src/fireEvent.js

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,38 @@ const invokeEvent = (
2626
const toEventHandlerName = (eventName: string) =>
2727
`on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;
2828

29-
const press = (element: ReactTestInstance) => invokeEvent(element, 'press');
30-
const doublePress = (element: ReactTestInstance) =>
29+
const pressHandler = (element: ReactTestInstance) =>
30+
invokeEvent(element, 'press');
31+
const doublePressHandler = (element: ReactTestInstance) =>
3132
invokeEvent(element, 'doublePress');
32-
const changeText = (element: ReactTestInstance, data: any) =>
33+
const changeTextHandler = (element: ReactTestInstance, data: any) =>
3334
invokeEvent(element, 'changeText', data);
34-
const scroll = (element: ReactTestInstance, data: any) =>
35+
const scrollHandler = (element: ReactTestInstance, data: any) =>
3536
invokeEvent(element, 'scroll', data);
3637

37-
export default {
38-
press,
39-
doublePress,
40-
changeText,
41-
scroll,
42-
invokeEvent,
43-
};
38+
const EVENTS = [
39+
{
40+
name: 'press',
41+
handler: pressHandler,
42+
},
43+
{
44+
name: 'doublePress',
45+
handler: doublePressHandler,
46+
},
47+
{
48+
name: 'changeText',
49+
handler: changeTextHandler,
50+
},
51+
{
52+
name: 'scroll',
53+
handler: scrollHandler,
54+
},
55+
];
56+
57+
const fireEvent = invokeEvent;
58+
59+
EVENTS.forEach(event => {
60+
fireEvent[event.name] = event.handler;
61+
});
62+
63+
export default fireEvent;

src/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import render from './render';
33
import shallow from './shallow';
44
import flushMicrotasksQueue from './flushMicrotasksQueue';
55
import debug from './debug';
6+
import fireEvent from './fireEvent';
67

78
export { render };
89
export { shallow };
910
export { flushMicrotasksQueue };
1011
export { debug };
12+
export { fireEvent };

0 commit comments

Comments
 (0)