|
16 | 16 | import static org.mockito.Mockito.verifyNoMoreInteractions;
|
17 | 17 | import static org.mockito.Mockito.when;
|
18 | 18 |
|
| 19 | +import android.graphics.Rect; |
19 | 20 | import android.view.MotionEvent;
|
20 | 21 | import com.facebook.react.bridge.Arguments;
|
21 | 22 | import com.facebook.react.bridge.CatalystInstance;
|
|
25 | 26 | import com.facebook.react.bridge.ReactContext;
|
26 | 27 | import com.facebook.react.bridge.ReactTestHelper;
|
27 | 28 | import com.facebook.react.bridge.WritableArray;
|
| 29 | +import com.facebook.react.bridge.WritableMap; |
28 | 30 | import com.facebook.react.common.SystemClock;
|
| 31 | +import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter; |
29 | 32 | import com.facebook.react.uimanager.DisplayMetricsHolder;
|
30 | 33 | import com.facebook.react.uimanager.UIManagerModule;
|
31 | 34 | import com.facebook.react.uimanager.events.Event;
|
|
37 | 40 | import org.junit.Test;
|
38 | 41 | import org.junit.runner.RunWith;
|
39 | 42 | import org.mockito.ArgumentCaptor;
|
| 43 | +import org.mockito.Mockito; |
40 | 44 | import org.mockito.invocation.InvocationOnMock;
|
41 | 45 | import org.mockito.stubbing.Answer;
|
42 | 46 | import org.powermock.api.mockito.PowerMockito;
|
@@ -209,4 +213,43 @@ public void testRemountApplication() {
|
209 | 213 | rootView.unmountReactApplication();
|
210 | 214 | rootView.startReactApplication(instanceManager, "");
|
211 | 215 | }
|
| 216 | + |
| 217 | + @Test |
| 218 | + public void testCheckForKeyboardEvents() { |
| 219 | + ReactInstanceManager instanceManager = mock(ReactInstanceManager.class); |
| 220 | + RCTDeviceEventEmitter eventEmitterModuleMock = mock(RCTDeviceEventEmitter.class); |
| 221 | + |
| 222 | + when(instanceManager.getCurrentReactContext()).thenReturn(mReactContext); |
| 223 | + when(mReactContext.getJSModule(RCTDeviceEventEmitter.class)).thenReturn(eventEmitterModuleMock); |
| 224 | + |
| 225 | + ReactRootView rootView = |
| 226 | + new ReactRootView(mReactContext) { |
| 227 | + @Override |
| 228 | + public void getWindowVisibleDisplayFrame(Rect outRect) { |
| 229 | + if (outRect.bottom == 0) { |
| 230 | + outRect.bottom += 100; |
| 231 | + outRect.right += 370; |
| 232 | + } else { |
| 233 | + outRect.bottom += 370; |
| 234 | + } |
| 235 | + } |
| 236 | + }; |
| 237 | + |
| 238 | + rootView.startReactApplication(instanceManager, ""); |
| 239 | + rootView.simulateCheckForKeyboardForTesting(); |
| 240 | + |
| 241 | + WritableMap params = Arguments.createMap(); |
| 242 | + WritableMap endCoordinates = Arguments.createMap(); |
| 243 | + double screenHeight = 470.0; |
| 244 | + double keyboardHeight = 100.0; |
| 245 | + params.putDouble("duration", 0.0); |
| 246 | + endCoordinates.putDouble("width", screenHeight - keyboardHeight); |
| 247 | + endCoordinates.putDouble("screenX", 0.0); |
| 248 | + endCoordinates.putDouble("height", screenHeight - keyboardHeight); |
| 249 | + endCoordinates.putDouble("screenY", keyboardHeight); |
| 250 | + params.putMap("endCoordinates", endCoordinates); |
| 251 | + params.putString("easing", "keyboard"); |
| 252 | + |
| 253 | + verify(eventEmitterModuleMock, Mockito.times(1)).emit("keyboardDidShow", params); |
| 254 | + } |
212 | 255 | }
|
0 commit comments