@@ -27,21 +27,28 @@ import com.facebook.react.common.SystemClock
27
27
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
28
28
import com.facebook.react.uimanager.DisplayMetricsHolder
29
29
import com.facebook.react.uimanager.UIManagerModule
30
- import com.facebook.react.uimanager.events.Event
31
30
import com.facebook.react.uimanager.events.EventDispatcher
32
31
import com.facebook.react.uimanager.events.RCTEventEmitter
32
+ import com.facebook.react.uimanager.events.TouchEvent
33
33
import java.util.Date
34
34
import org.assertj.core.api.Assertions.*
35
35
import org.junit.After
36
36
import org.junit.Before
37
37
import org.junit.Test
38
38
import org.junit.runner.RunWith
39
- import org.mockito.ArgumentCaptor
40
- import org.mockito.ArgumentMatchers
41
39
import org.mockito.MockedStatic
42
- import org.mockito.Mockito
43
- import org.mockito.Mockito.*
44
- import org.mockito.Mockito.`when` as whenever
40
+ import org.mockito.Mockito.mockStatic
41
+ import org.mockito.kotlin.KArgumentCaptor
42
+ import org.mockito.kotlin.any
43
+ import org.mockito.kotlin.argumentCaptor
44
+ import org.mockito.kotlin.eq
45
+ import org.mockito.kotlin.mock
46
+ import org.mockito.kotlin.reset
47
+ import org.mockito.kotlin.spy
48
+ import org.mockito.kotlin.times
49
+ import org.mockito.kotlin.verify
50
+ import org.mockito.kotlin.verifyNoMoreInteractions
51
+ import org.mockito.kotlin.whenever
45
52
import org.robolectric.Robolectric
46
53
import org.robolectric.RobolectricTestRunner
47
54
import org.robolectric.RuntimeEnvironment
@@ -55,26 +62,38 @@ class RootViewTest {
55
62
private lateinit var arguments: MockedStatic <Arguments >
56
63
private lateinit var systemClock: MockedStatic <SystemClock >
57
64
65
+ private lateinit var downEventCaptor: KArgumentCaptor <TouchEvent >
66
+ private lateinit var downActionTouchesArgCaptor: KArgumentCaptor <WritableArray >
67
+
68
+ private lateinit var upEventCaptor: KArgumentCaptor <TouchEvent >
69
+ private lateinit var upActionTouchesArgCaptor: KArgumentCaptor <WritableArray >
70
+
58
71
@Before
59
72
fun setUp () {
60
73
ReactNativeFeatureFlagsForTests .setUp()
61
74
62
- arguments = Mockito . mockStatic(Arguments ::class .java)
75
+ arguments = mockStatic(Arguments ::class .java)
63
76
arguments.`when `<WritableArray > { Arguments .createArray() }.thenAnswer { JavaOnlyArray () }
64
77
arguments.`when `<WritableMap > { Arguments .createMap() }.thenAnswer { JavaOnlyMap () }
65
78
66
79
val ts = SystemClock .uptimeMillis()
67
- systemClock = Mockito . mockStatic(SystemClock ::class .java)
80
+ systemClock = mockStatic(SystemClock ::class .java)
68
81
systemClock.`when `<Long > { SystemClock .uptimeMillis() }.thenReturn(ts)
69
82
70
83
catalystInstanceMock = ReactTestHelper .createMockCatalystInstance()
71
84
reactContext = spy(BridgeReactContext (RuntimeEnvironment .getApplication()))
72
85
reactContext.initializeWithInstance(catalystInstanceMock)
73
86
74
87
DisplayMetricsHolder .initDisplayMetricsIfNotInitialized(reactContext)
75
- val uiManagerModuleMock = mock(UIManagerModule :: class .java )
88
+ val uiManagerModuleMock: UIManagerModule = mock()
76
89
whenever(catalystInstanceMock.getNativeModule(UIManagerModule ::class .java))
77
90
.thenReturn(uiManagerModuleMock)
91
+
92
+ downEventCaptor = argumentCaptor()
93
+ downActionTouchesArgCaptor = argumentCaptor()
94
+
95
+ upEventCaptor = argumentCaptor()
96
+ upActionTouchesArgCaptor = argumentCaptor()
78
97
}
79
98
80
99
@After
@@ -85,11 +104,11 @@ class RootViewTest {
85
104
86
105
@Test
87
106
fun testTouchEmitter () {
88
- val instanceManager = mock(ReactInstanceManager :: class .java )
107
+ val instanceManager: ReactInstanceManager = mock()
89
108
whenever(instanceManager.currentReactContext).thenReturn(reactContext)
90
- val uiManager = mock(UIManagerModule :: class .java )
91
- val eventDispatcher = mock(EventDispatcher :: class .java )
92
- val eventEmitterModuleMock = mock(RCTEventEmitter :: class .java )
109
+ val uiManager: UIManagerModule = mock()
110
+ val eventDispatcher: EventDispatcher = mock()
111
+ val eventEmitterModuleMock: RCTEventEmitter = mock()
93
112
whenever(catalystInstanceMock.getNativeModule(UIManagerModule ::class .java))
94
113
.thenReturn(uiManager)
95
114
whenever(uiManager.eventDispatcher).thenReturn(eventDispatcher)
@@ -106,19 +125,14 @@ class RootViewTest {
106
125
// Test ACTION_DOWN event
107
126
rootView.onTouchEvent(MotionEvent .obtain(100 , ts, MotionEvent .ACTION_DOWN , 0f , 0f , 0 ))
108
127
109
- val downEventCaptor = ArgumentCaptor .forClass(Event ::class .java)
110
128
verify(eventDispatcher).dispatchEvent(downEventCaptor.capture())
111
129
verifyNoMoreInteractions(eventDispatcher)
112
- downEventCaptor.value.dispatch(eventEmitterModuleMock)
113
- val downActionTouchesArgCaptor = ArgumentCaptor .forClass(JavaOnlyArray ::class .java)
130
+ downEventCaptor.firstValue.dispatch(eventEmitterModuleMock)
114
131
verify(eventEmitterModuleMock)
115
- .receiveTouches(
116
- ArgumentMatchers .eq(" topTouchStart" ),
117
- downActionTouchesArgCaptor.capture(),
118
- ArgumentMatchers .any(JavaOnlyArray ::class .java))
132
+ .receiveTouches(eq(" topTouchStart" ), downActionTouchesArgCaptor.capture(), any())
119
133
verifyNoMoreInteractions(eventEmitterModuleMock)
120
- assertThat(downActionTouchesArgCaptor.value .size()).isEqualTo(1 )
121
- assertThat(downActionTouchesArgCaptor.value .getMap(0 ))
134
+ assertThat(downActionTouchesArgCaptor.firstValue .size()).isEqualTo(1 )
135
+ assertThat(downActionTouchesArgCaptor.firstValue .getMap(0 ))
122
136
.isEqualTo(
123
137
JavaOnlyMap .of(
124
138
" pageX" ,
@@ -140,22 +154,17 @@ class RootViewTest {
140
154
141
155
// Test ACTION_UP event
142
156
reset(eventEmitterModuleMock, eventDispatcher)
143
- val upEventCaptor = ArgumentCaptor .forClass(Event ::class .java)
144
- val upActionTouchesArgCaptor = ArgumentCaptor .forClass(JavaOnlyArray ::class .java)
145
157
146
158
rootView.onTouchEvent(MotionEvent .obtain(50 , ts, MotionEvent .ACTION_UP , 0f , 0f , 0 ))
147
159
148
160
verify(eventDispatcher).dispatchEvent(upEventCaptor.capture())
149
161
verifyNoMoreInteractions(eventDispatcher)
150
- upEventCaptor.value .dispatch(eventEmitterModuleMock)
162
+ upEventCaptor.firstValue .dispatch(eventEmitterModuleMock)
151
163
verify(eventEmitterModuleMock)
152
- .receiveTouches(
153
- ArgumentMatchers .eq(" topTouchEnd" ),
154
- upActionTouchesArgCaptor.capture(),
155
- ArgumentMatchers .any(WritableArray ::class .java))
164
+ .receiveTouches(eq(" topTouchEnd" ), upActionTouchesArgCaptor.capture(), any())
156
165
verifyNoMoreInteractions(eventEmitterModuleMock)
157
- assertThat(upActionTouchesArgCaptor.value .size()).isEqualTo(1 )
158
- assertThat(upActionTouchesArgCaptor.value .getMap(0 ))
166
+ assertThat(upActionTouchesArgCaptor.firstValue .size()).isEqualTo(1 )
167
+ assertThat(upActionTouchesArgCaptor.firstValue .getMap(0 ))
159
168
.isEqualTo(
160
169
JavaOnlyMap .of(
161
170
" pageX" ,
@@ -186,7 +195,7 @@ class RootViewTest {
186
195
187
196
@Test
188
197
fun testRemountApplication () {
189
- val instanceManager = mock(ReactInstanceManager :: class .java )
198
+ val instanceManager: ReactInstanceManager = mock()
190
199
val rootView = ReactRootView (reactContext)
191
200
rootView.startReactApplication(instanceManager, " " )
192
201
rootView.unmountReactApplication()
@@ -195,7 +204,7 @@ class RootViewTest {
195
204
196
205
@Test
197
206
fun testCheckForKeyboardEvents () {
198
- val instanceManager = mock(ReactInstanceManager :: class .java )
207
+ val instanceManager: ReactInstanceManager = mock()
199
208
val activity = Robolectric .buildActivity(Activity ::class .java).create().get()
200
209
whenever(instanceManager.currentReactContext).thenReturn(reactContext)
201
210
val rootView: ReactRootView =
0 commit comments