@@ -18,7 +18,7 @@ import { nativeState } from '../native-state';
1818
1919const layoutEvent = { nativeEvent : { layout : { width : 100 , height : 100 } } } ;
2020const verticalScrollEvent = { nativeEvent : { contentOffset : { y : 200 } } } ;
21- const scrollEvent = { nativeEvent : { contentOffset : { x : 100 , y : 200 } } } ;
21+ const horizontalScrollEvent = { nativeEvent : { contentOffset : { x : 50 } } } ;
2222const pressEventData = { nativeEvent : { pageX : 20 , pageY : 30 } } ;
2323
2424test ( '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