Skip to content

Commit 05bf731

Browse files
committed
.
1 parent a1839d8 commit 05bf731

File tree

1 file changed

+34
-10
lines changed

1 file changed

+34
-10
lines changed

src/__tests__/fire-event.test.tsx

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { nativeState } from '../native-state';
1818

1919
const layoutEvent = { nativeEvent: { layout: { width: 100, height: 100 } } };
2020
const verticalScrollEvent = { nativeEvent: { contentOffset: { y: 200 } } };
21-
const scrollEvent = { nativeEvent: { contentOffset: { x: 100, y: 200 } } };
21+
const horizontalScrollEvent = { nativeEvent: { contentOffset: { x: 50 } } };
2222
const pressEventData = { nativeEvent: { pageX: 20, pageY: 30 } };
2323

2424
test('fireEvent accepts event name with or without "on" prefix', async () => {
@@ -127,11 +127,9 @@ describe('fireEvent.scroll', () => {
127127
const handler = jest.fn();
128128
await render(<ScrollView testID="scroll" {...{ [propName]: handler }} />);
129129
const scrollView = screen.getByTestId('scroll');
130-
await fireEvent(scrollView, eventName, scrollEvent);
131-
expect(handler).toHaveBeenCalledWith(scrollEvent);
132-
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual(
133-
scrollEvent.nativeEvent.contentOffset,
134-
);
130+
await fireEvent(scrollView, eventName, verticalScrollEvent);
131+
expect(handler).toHaveBeenCalledWith(verticalScrollEvent);
132+
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 0, y: 200 });
135133
});
136134

137135
test('without contentOffset does not update native state', async () => {
@@ -156,13 +154,26 @@ describe('fireEvent.scroll', () => {
156154
);
157155
const scrollView = screen.getByTestId('scroll');
158156
await fireEvent.scroll(scrollView, {
159-
nativeEvent: { contentOffset: { x: Infinity, y: NaN } },
157+
nativeEvent: { contentOffset: { y: Infinity } },
160158
});
161159
expect(onScroll).toHaveBeenCalled();
162160
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 0, y: 0 });
163161
});
164162

165-
test('with valid contentOffset updates native state', async () => {
163+
test('with horizontal scroll updates native state', async () => {
164+
const onScroll = jest.fn();
165+
await render(
166+
<ScrollView testID="scroll" onScroll={onScroll}>
167+
<Text>Content</Text>
168+
</ScrollView>,
169+
);
170+
const scrollView = screen.getByTestId('scroll');
171+
await fireEvent.scroll(scrollView, horizontalScrollEvent);
172+
expect(onScroll).toHaveBeenCalledWith(horizontalScrollEvent);
173+
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 50, y: 0 });
174+
});
175+
176+
test('with non-finite x contentOffset value uses 0', async () => {
166177
const onScroll = jest.fn();
167178
await render(
168179
<ScrollView testID="scroll" onScroll={onScroll}>
@@ -171,10 +182,23 @@ describe('fireEvent.scroll', () => {
171182
);
172183
const scrollView = screen.getByTestId('scroll');
173184
await fireEvent.scroll(scrollView, {
174-
nativeEvent: { contentOffset: { x: 100, y: 200 } },
185+
nativeEvent: { contentOffset: { x: Infinity } },
175186
});
176187
expect(onScroll).toHaveBeenCalled();
177-
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 100, y: 200 });
188+
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 0, y: 0 });
189+
});
190+
191+
test('with valid contentOffset updates native state', async () => {
192+
const onScroll = jest.fn();
193+
await render(
194+
<ScrollView testID="scroll" onScroll={onScroll}>
195+
<Text>Content</Text>
196+
</ScrollView>,
197+
);
198+
const scrollView = screen.getByTestId('scroll');
199+
await fireEvent.scroll(scrollView, verticalScrollEvent);
200+
expect(onScroll).toHaveBeenCalled();
201+
expect(nativeState.contentOffsetForElement.get(scrollView)).toEqual({ x: 0, y: 200 });
178202
});
179203
});
180204

0 commit comments

Comments
 (0)