@@ -47,8 +47,8 @@ function tapAndMoveOutside({
4747 // NOTE: this assumes the PointerEvent implementation calls
4848 // 'releasePointerCapture' for touch pointers
4949 if ( ! hasPointerEvents && pointerType === 'touch' ) {
50- downTarget . pointermove ( { pointerType, ...coordinatesOutside } ) ;
5150 document . elementFromPoint = ( ) => upTarget . node ;
51+ downTarget . pointermove ( { pointerType, ...coordinatesOutside } ) ;
5252 } else {
5353 upTarget . pointermove ( { pointerType, ...coordinatesOutside } ) ;
5454 }
@@ -450,26 +450,41 @@ describeWithPointerEvent('Tap responder', hasPointerEvents => {
450450 } ) ;
451451
452452 describe ( 'onTapChange' , ( ) => {
453- let onTapChange , ref ;
453+ let eventsLog , onTapChange , ref ;
454+
455+ const logger = msg => ( ) => {
456+ eventsLog . push ( msg ) ;
457+ } ;
454458
455459 beforeEach ( ( ) => {
460+ eventsLog = [ ] ;
456461 onTapChange = jest . fn ( ) ;
457462 ref = React . createRef ( ) ;
458463 const Component = ( ) => {
459- const listener = useTap ( { onTapChange} ) ;
464+ const listener = useTap ( {
465+ onTapChange ( e ) {
466+ logger ( 'change' ) ( ) ;
467+ onTapChange ( e ) ;
468+ } ,
469+ onTapStart : logger ( 'start' ) ,
470+ onTapEnd : logger ( 'end' ) ,
471+ onTapCancel : logger ( 'cancel' ) ,
472+ } ) ;
460473 return < div ref = { ref } listeners = { listener } /> ;
461474 } ;
462475 ReactDOM . render ( < Component /> , container ) ;
476+ document . elementFromPoint = ( ) => ref . current ;
463477 } ) ;
464478
465479 testWithPointerType ( 'pointer down/up' , pointerType => {
466480 const target = createEventTarget ( ref . current ) ;
467481 target . pointerdown ( { pointerType} ) ;
468482 expect ( onTapChange ) . toHaveBeenCalledTimes ( 1 ) ;
469483 expect ( onTapChange ) . toHaveBeenCalledWith ( true ) ;
470- target . pointerup ( { pointerType} ) ;
484+ target . pointerup ( { pointerType, x : 0 , y : 0 } ) ;
471485 expect ( onTapChange ) . toHaveBeenCalledTimes ( 2 ) ;
472486 expect ( onTapChange ) . toHaveBeenCalledWith ( false ) ;
487+ expect ( eventsLog ) . toEqual ( [ 'start' , 'change' , 'change' , 'end' ] ) ;
473488 } ) ;
474489
475490 testWithPointerType ( 'pointer cancel' , pointerType => {
@@ -480,6 +495,7 @@ describeWithPointerEvent('Tap responder', hasPointerEvents => {
480495 target . pointercancel ( { pointerType} ) ;
481496 expect ( onTapChange ) . toHaveBeenCalledTimes ( 2 ) ;
482497 expect ( onTapChange ) . toHaveBeenCalledWith ( false ) ;
498+ expect ( eventsLog ) . toEqual ( [ 'start' , 'change' , 'change' , 'cancel' ] ) ;
483499 } ) ;
484500
485501 testWithPointerType ( 'pointer move outside target' , pointerType => {
0 commit comments