Skip to content
This repository was archived by the owner on Jul 30, 2020. It is now read-only.

Commit d6ff21a

Browse files
committed
tests: add more event tests
1 parent fbfd1b3 commit d6ff21a

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

src/__tests__/events.js

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
11
import React from 'react';
2+
import 'jest-native/extend-expect';
23
import { Button, Image, Text, TextInput, TouchableHighlight } from 'react-native';
34

4-
import { render, fireEvent } from '../';
5-
import { NativeEvent } from '../events';
5+
import { render, fireEvent, getEventHandlerName, wait } from '../';
6+
import { eventMap, NativeEvent } from '../events';
7+
8+
Object.keys(eventMap).forEach(key => {
9+
const handlerName = getEventHandlerName(key);
10+
11+
describe(`${handlerName}`, () => {
12+
const config = eventMap[key];
13+
14+
config.validTargets.forEach(element => {
15+
const handler = jest.fn();
16+
const { baseElement } = render(React.createElement(element, { [handlerName]: handler }));
17+
18+
fireEvent[key](baseElement);
19+
20+
expect(handler).toHaveBeenCalledTimes(1);
21+
});
22+
});
23+
});
624

725
test('onChange works', () => {
826
const handleChange = jest.fn();
@@ -26,6 +44,27 @@ test('onChangeText works', () => {
2644
expect(input.props.value).toBe('second');
2745
});
2846

47+
test('assigns target properties', async () => {
48+
class MyComponent extends React.Component {
49+
state = { value: '' };
50+
onChange = ({ nativeEvent }) => {
51+
this.setState({ value: nativeEvent.text });
52+
this.props.onChange();
53+
};
54+
render() {
55+
return <TextInput testID="input" value={this.state.value} onChange={this.onChange} />;
56+
}
57+
}
58+
59+
const spy = jest.fn();
60+
const value = 'a';
61+
const { getByTestId } = render(<MyComponent onChange={spy} />);
62+
const input = getByTestId('input');
63+
fireEvent.change(input, { nativeEvent: { text: value } });
64+
expect(spy).toHaveBeenCalledTimes(1);
65+
await wait(() => expect(input.props.value).toBe(value));
66+
});
67+
2968
test('calling `fireEvent` directly works too', () => {
3069
const handleEvent = jest.fn();
3170
const { baseElement } = render(<Button onPress={handleEvent} title="test" />);

src/events.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,4 +286,4 @@ Object.keys(eventMap).forEach(key => {
286286
};
287287
});
288288

289-
export { fireEvent, getEventHandlerName, NativeEvent };
289+
export { eventMap, fireEvent, getEventHandlerName, NativeEvent };

0 commit comments

Comments
 (0)