2
2
import act from './act' ;
3
3
import { ErrorWithStack } from './helpers/errors' ;
4
4
5
- const findEventHandler = ( element : ReactTestInstance , eventName : string ) => {
5
+ const findEventHandler = (
6
+ element : ReactTestInstance ,
7
+ eventName : string ,
8
+ callsite ? : any
9
+ ) => {
6
10
const eventHandler = toEventHandlerName ( eventName ) ;
7
11
8
12
if ( typeof element . props [ eventHandler ] === 'function' ) {
@@ -14,20 +18,25 @@ const findEventHandler = (element: ReactTestInstance, eventName: string) => {
14
18
// Do not bubble event to the root element
15
19
if ( element . parent === null || element . parent . parent === null ) {
16
20
throw new ErrorWithStack (
17
- `No handler function found for event: ${ eventName } ` ,
18
- invokeEvent
21
+ `No handler function found for event: " ${ eventName } " ` ,
22
+ callsite || invokeEvent
19
23
) ;
20
24
}
21
25
22
- return findEventHandler ( element . parent , eventName ) ;
26
+ return findEventHandler ( element . parent , eventName , callsite ) ;
23
27
} ;
24
28
25
29
const invokeEvent = (
26
30
element : ReactTestInstance ,
27
31
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
+ }
31
40
32
41
let returnValue ;
33
42
@@ -42,11 +51,11 @@ const toEventHandlerName = (eventName: string) =>
42
51
`on${ eventName . charAt ( 0 ) . toUpperCase ( ) } ${ eventName . slice ( 1 ) } ` ;
43
52
44
53
const pressHandler = ( element : ReactTestInstance ) =>
45
- invokeEvent ( element , 'press' ) ;
54
+ invokeEvent ( element , 'press' , undefined , pressHandler ) ;
46
55
const changeTextHandler = ( element : ReactTestInstance , data ?: * ) =>
47
- invokeEvent ( element , 'changeText' , data ) ;
56
+ invokeEvent ( element , 'changeText' , data , changeTextHandler ) ;
48
57
const scrollHandler = ( element : ReactTestInstance , data ?: * ) =>
49
- invokeEvent ( element , 'scroll' , data ) ;
58
+ invokeEvent ( element , 'scroll' , data , scrollHandler ) ;
50
59
51
60
const fireEvent = invokeEvent ;
52
61
0 commit comments