@@ -84,4 +84,59 @@ describe('List.Firefox-Scroll', () => {
8484 expect ( wheelPreventDefault ) . not . toHaveBeenCalled ( ) ;
8585 expect ( firefoxPreventDefault ) . toHaveBeenCalledTimes ( 1 ) ;
8686 } ) ;
87+
88+ it ( 'should call preventDefault on MozMousePixelScroll' , ( ) => {
89+ const preventDefault = jest . fn ( ) ;
90+ const wrapper = genList ( { itemHeight : 20 , height : 100 , data : genData ( 100 ) } ) ;
91+ const ulElement = wrapper . find ( 'ul' ) . instance ( ) ;
92+
93+ act ( ( ) => {
94+ const event = new Event ( 'MozMousePixelScroll' ) ;
95+ event . detail = 6 ;
96+ event . preventDefault = preventDefault ;
97+ ulElement . dispatchEvent ( event ) ;
98+
99+ jest . runAllTimers ( ) ;
100+ } ) ;
101+
102+ expect ( preventDefault ) . toHaveBeenCalled ( ) ;
103+ } ) ;
104+
105+ it ( 'should not call preventDefault on MozMousePixelScroll when scrolling up at top boundary' , ( ) => {
106+ const preventDefault = jest . fn ( ) ;
107+ const wrapper = genList ( { itemHeight : 20 , height : 100 , data : genData ( 100 ) } ) ;
108+ const ulElement = wrapper . find ( 'ul' ) . instance ( ) ;
109+
110+ act ( ( ) => {
111+ const event = new Event ( 'MozMousePixelScroll' ) ;
112+ event . detail = - 6 ;
113+ event . preventDefault = preventDefault ;
114+ ulElement . dispatchEvent ( event ) ;
115+
116+ jest . runAllTimers ( ) ;
117+ } ) ;
118+
119+ expect ( preventDefault ) . not . toHaveBeenCalled ( ) ;
120+ } ) ;
121+ it ( 'should not call preventDefault on MozMousePixelScroll when scrolling down at bottom boundary' , ( ) => {
122+ const preventDefault = jest . fn ( ) ;
123+ const listRef = React . createRef ( ) ;
124+ const wrapper = genList ( { itemHeight : 20 , height : 100 , data : genData ( 100 ) , ref : listRef } ) ;
125+ const ulElement = wrapper . find ( 'ul' ) . instance ( ) ;
126+ // scroll to bottom
127+ listRef . current . scrollTo ( 99999 ) ;
128+ jest . runAllTimers ( ) ;
129+ expect ( wrapper . find ( 'ul' ) . instance ( ) . scrollTop ) . toEqual ( 1900 ) ;
130+
131+ act ( ( ) => {
132+ const event = new Event ( 'MozMousePixelScroll' ) ;
133+ event . detail = 6 ;
134+ event . preventDefault = preventDefault ;
135+ ulElement . dispatchEvent ( event ) ;
136+
137+ jest . runAllTimers ( ) ;
138+ } ) ;
139+
140+ expect ( preventDefault ) . not . toHaveBeenCalled ( ) ;
141+ } ) ;
87142} ) ;
0 commit comments