Skip to content

Commit a1839d8

Browse files
committed
.
1 parent 58b2973 commit a1839d8

File tree

1 file changed

+17
-41
lines changed

1 file changed

+17
-41
lines changed

src/__tests__/fire-event.test.tsx

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import { fireEvent, render, screen } from '..';
1717
import { nativeState } from '../native-state';
1818

1919
const layoutEvent = { nativeEvent: { layout: { width: 100, height: 100 } } };
20+
const verticalScrollEvent = { nativeEvent: { contentOffset: { y: 200 } } };
21+
const scrollEvent = { nativeEvent: { contentOffset: { x: 100, y: 200 } } };
2022
const pressEventData = { nativeEvent: { pageX: 20, pageY: 30 } };
2123

2224
test('fireEvent accepts event name with or without "on" prefix', async () => {
@@ -103,9 +105,6 @@ describe('fireEvent.changeText', () => {
103105
});
104106

105107
describe('fireEvent.scroll', () => {
106-
const scrollEventWithY = { nativeEvent: { contentOffset: { y: 200 } } };
107-
const scrollEventWithXY = { nativeEvent: { contentOffset: { x: 50, y: 100 } } };
108-
109108
test('works on ScrollView', async () => {
110109
const onScroll = jest.fn();
111110
await render(
@@ -114,48 +113,25 @@ describe('fireEvent.scroll', () => {
114113
</ScrollView>,
115114
);
116115
const scrollView = screen.getByTestId('scroll');
117-
await fireEvent.scroll(scrollView, scrollEventWithY);
118-
expect(onScroll).toHaveBeenCalledWith(scrollEventWithY);
116+
await fireEvent.scroll(scrollView, verticalScrollEvent);
117+
expect(onScroll).toHaveBeenCalledWith(verticalScrollEvent);
119118
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 0, y: 200 });
120119
});
121120

122-
test('fires onScrollBeginDrag', async () => {
123-
const onScrollBeginDrag = jest.fn();
124-
await render(<ScrollView testID="scroll" onScrollBeginDrag={onScrollBeginDrag} />);
125-
const scrollView = screen.getByTestId('scroll');
126-
await fireEvent(scrollView, 'scrollBeginDrag', scrollEventWithXY);
127-
expect(onScrollBeginDrag).toHaveBeenCalledWith(scrollEventWithXY);
128-
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 50, y: 100 });
129-
});
130-
131-
test('fires onScrollEndDrag', async () => {
132-
const onScrollEndDrag = jest.fn();
133-
const eventData = { nativeEvent: { contentOffset: { x: 75, y: 150 } } };
134-
await render(<ScrollView testID="scroll" onScrollEndDrag={onScrollEndDrag} />);
135-
const scrollView = screen.getByTestId('scroll');
136-
await fireEvent(scrollView, 'scrollEndDrag', eventData);
137-
expect(onScrollEndDrag).toHaveBeenCalledWith(eventData);
138-
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 75, y: 150 });
139-
});
140-
141-
test('fires onMomentumScrollBegin', async () => {
142-
const onMomentumScrollBegin = jest.fn();
143-
const eventData = { nativeEvent: { contentOffset: { x: 120, y: 250 } } };
144-
await render(<ScrollView testID="scroll" onMomentumScrollBegin={onMomentumScrollBegin} />);
145-
const scrollView = screen.getByTestId('scroll');
146-
await fireEvent(scrollView, 'momentumScrollBegin', eventData);
147-
expect(onMomentumScrollBegin).toHaveBeenCalledWith(eventData);
148-
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 120, y: 250 });
149-
});
150-
151-
test('fires onMomentumScrollEnd', async () => {
152-
const onMomentumScrollEnd = jest.fn();
153-
const eventData = { nativeEvent: { contentOffset: { x: 200, y: 400 } } };
154-
await render(<ScrollView testID="scroll" onMomentumScrollEnd={onMomentumScrollEnd} />);
121+
test.each([
122+
['onScrollBeginDrag', 'scrollBeginDrag'],
123+
['onScrollEndDrag', 'scrollEndDrag'],
124+
['onMomentumScrollBegin', 'momentumScrollBegin'],
125+
['onMomentumScrollEnd', 'momentumScrollEnd'],
126+
])('fires %s', async (propName, eventName) => {
127+
const handler = jest.fn();
128+
await render(<ScrollView testID="scroll" {...{ [propName]: handler }} />);
155129
const scrollView = screen.getByTestId('scroll');
156-
await fireEvent(scrollView, 'momentumScrollEnd', eventData);
157-
expect(onMomentumScrollEnd).toHaveBeenCalledWith(eventData);
158-
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 200, y: 400 });
130+
await fireEvent(scrollView, eventName, scrollEvent);
131+
expect(handler).toHaveBeenCalledWith(scrollEvent);
132+
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual(
133+
scrollEvent.nativeEvent.contentOffset,
134+
);
159135
});
160136

161137
test('without contentOffset does not update native state', async () => {

0 commit comments

Comments
 (0)