11import React from 'react' ;
2- import { Pressable , Text } from 'react-native' ;
3- import { render , screen } from '../../../pure' ;
2+ import { Pressable , Text , TouchableHighlight , TouchableOpacity } from 'react-native' ;
3+ import { createEventLogger , getEventsNames } from '../../../test-utils' ;
4+ import { render , screen } from '../../..' ;
45import { userEvent } from '../..' ;
56
67describe ( 'userEvent.longPress with real timers' , ( ) => {
@@ -9,6 +10,68 @@ describe('userEvent.longPress with real timers', () => {
910 jest . restoreAllMocks ( ) ;
1011 } ) ;
1112
13+ test ( 'works on Pressable' , async ( ) => {
14+ const { events, logEvent } = createEventLogger ( ) ;
15+ const user = userEvent . setup ( ) ;
16+
17+ render (
18+ < Pressable
19+ onPress = { logEvent ( 'press' ) }
20+ onPressIn = { logEvent ( 'pressIn' ) }
21+ onPressOut = { logEvent ( 'pressOut' ) }
22+ onLongPress = { logEvent ( 'longPress' ) }
23+ testID = "pressable"
24+ /> ,
25+ ) ;
26+
27+ await user . longPress ( screen . getByTestId ( 'pressable' ) ) ;
28+ expect ( getEventsNames ( events ) ) . toEqual ( [ 'pressIn' , 'longPress' , 'pressOut' ] ) ;
29+ } ) ;
30+
31+ test ( 'works on TouchableOpacity' , async ( ) => {
32+ const mockOnPress = jest . fn ( ) ;
33+
34+ render (
35+ < TouchableOpacity onPress = { mockOnPress } >
36+ < Text > press me</ Text >
37+ </ TouchableOpacity > ,
38+ ) ;
39+
40+ await userEvent . longPress ( screen . getByText ( 'press me' ) ) ;
41+ expect ( mockOnPress ) . toHaveBeenCalled ( ) ;
42+ } ) ;
43+
44+ test ( 'works on TouchableHighlight' , async ( ) => {
45+ const mockOnPress = jest . fn ( ) ;
46+
47+ render (
48+ < TouchableHighlight onPress = { mockOnPress } >
49+ < Text > press me</ Text >
50+ </ TouchableHighlight > ,
51+ ) ;
52+
53+ await userEvent . longPress ( screen . getByText ( 'press me' ) ) ;
54+ expect ( mockOnPress ) . toHaveBeenCalled ( ) ;
55+ } ) ;
56+
57+ test ( 'works on Text' , async ( ) => {
58+ const { events, logEvent } = createEventLogger ( ) ;
59+
60+ render (
61+ < Text
62+ onPress = { logEvent ( 'press' ) }
63+ onPressIn = { logEvent ( 'pressIn' ) }
64+ onPressOut = { logEvent ( 'pressOut' ) }
65+ onLongPress = { logEvent ( 'longPress' ) }
66+ >
67+ press me
68+ </ Text > ,
69+ ) ;
70+
71+ await userEvent . longPress ( screen . getByText ( 'press me' ) ) ;
72+ expect ( getEventsNames ( events ) ) . toEqual ( [ 'pressIn' , 'longPress' , 'pressOut' ] ) ;
73+ } ) ;
74+
1275 test ( 'calls onLongPress if the delayLongPress is the default one' , async ( ) => {
1376 const mockOnLongPress = jest . fn ( ) ;
1477 const user = userEvent . setup ( ) ;
0 commit comments