22import act from './act' ;
33import { ErrorWithStack } from './helpers/errors' ;
44
5- const findEventHandler = ( element : ReactTestInstance , eventName : string ) => {
5+ const findEventHandler = (
6+ element : ReactTestInstance ,
7+ eventName : string ,
8+ callsite ? : any
9+ ) => {
610 const eventHandler = toEventHandlerName ( eventName ) ;
711
812 if ( typeof element . props [ eventHandler ] === 'function' ) {
@@ -14,20 +18,25 @@ const findEventHandler = (element: ReactTestInstance, eventName: string) => {
1418 // Do not bubble event to the root element
1519 if ( element . parent === null || element . parent . parent === null ) {
1620 throw new ErrorWithStack (
17- `No handler function found for event: ${ eventName } ` ,
18- invokeEvent
21+ `No handler function found for event: " ${ eventName } " ` ,
22+ callsite || invokeEvent
1923 ) ;
2024 }
2125
22- return findEventHandler ( element . parent , eventName ) ;
26+ return findEventHandler ( element . parent , eventName , callsite ) ;
2327} ;
2428
2529const invokeEvent = (
2630 element : ReactTestInstance ,
2731 eventName : string ,
28- data ?: *
29- ) : any => {
30- const handler = findEventHandler ( element , eventName ) ;
32+ data ? : any ,
33+ callsite ? : any
34+ ) => {
35+ const handler = findEventHandler ( element , eventName , callsite ) ;
36+
37+ if ( ! handler ) {
38+ return null ;
39+ }
3140
3241 let returnValue ;
3342
@@ -42,11 +51,11 @@ const toEventHandlerName = (eventName: string) =>
4251 `on${ eventName . charAt ( 0 ) . toUpperCase ( ) } ${ eventName . slice ( 1 ) } ` ;
4352
4453const pressHandler = ( element : ReactTestInstance ) =>
45- invokeEvent ( element , 'press' ) ;
54+ invokeEvent ( element , 'press' , undefined , pressHandler ) ;
4655const changeTextHandler = ( element : ReactTestInstance , data ?: * ) =>
47- invokeEvent ( element , 'changeText' , data ) ;
56+ invokeEvent ( element , 'changeText' , data , changeTextHandler ) ;
4857const scrollHandler = ( element : ReactTestInstance , data ?: * ) =>
49- invokeEvent ( element , 'scroll' , data ) ;
58+ invokeEvent ( element , 'scroll' , data , scrollHandler ) ;
5059
5160const fireEvent = invokeEvent ;
5261
0 commit comments