diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java deleted file mode 100644 index c301b04e7e8..00000000000 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ReactPickerTestCase.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.tests; - -import android.graphics.Color; -import android.widget.Spinner; -import android.widget.SpinnerAdapter; -import android.widget.TextView; -import com.facebook.react.bridge.BaseJavaModule; -import com.facebook.react.bridge.JavaScriptModule; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.testing.ReactAppInstrumentationTestCase; -import com.facebook.react.testing.ReactInstanceSpecForTest; -import com.facebook.react.views.picker.ReactDialogPickerManager; -import com.facebook.react.views.picker.ReactDropdownPickerManager; -import com.facebook.react.views.picker.ReactPicker; -import com.facebook.react.views.picker.ReactPickerManager; -import java.util.ArrayList; -import java.util.List; - -/** - * Integration test for {@link ReactDialogPickerManager} and {@link ReactDropdownPickerManager} - * (and, implicitly, {@link ReactPickerManager}). Tests basic properties, events and switching - * between spinner modes (which changes the used manager). - */ -public class ReactPickerTestCase extends ReactAppInstrumentationTestCase { - - private static interface PickerAndroidTestModule extends JavaScriptModule { - public void selectItem(int position); - - public void setMode(String mode); - - public void setPrimaryColor(String color); - } - - public static class PickerAndroidRecordingModule extends BaseJavaModule { - private final List mSelections = new ArrayList(); - - @Override - public String getName() { - return "PickerAndroidRecordingModule"; - } - - @ReactMethod - public void recordSelection(int position) { - mSelections.add(position); - } - - public List getSelections() { - return new ArrayList(mSelections); - } - } - - private PickerAndroidRecordingModule mRecordingModule; - - @Override - protected String getReactApplicationKeyUnderTest() { - return "PickerAndroidTestApp"; - } - - @Override - protected ReactInstanceSpecForTest createReactInstanceSpecForTest() { - mRecordingModule = new PickerAndroidRecordingModule(); - return super.createReactInstanceSpecForTest().addNativeModule(mRecordingModule); - } - - public void testBasicProperties() { - ReactPicker spinner = getViewAtPath(0, 0); - SpinnerAdapter adapter = spinner.getAdapter(); - - assertEquals(Spinner.MODE_DIALOG, spinner.getMode()); - assertEquals("prompt", spinner.getPrompt()); - assertNotNull(adapter); - assertEquals(3, adapter.getCount()); - assertEquals("item1", ((TextView) adapter.getView(0, null, null)).getText()); - assertEquals("item2", ((TextView) adapter.getView(1, null, null)).getText()); - assertEquals("item3", ((TextView) adapter.getView(2, null, null)).getText()); - assertEquals(1, spinner.getSelectedItemPosition()); - - // test colors - assertEquals(Color.RED, ((TextView) adapter.getView(0, null, null)).getCurrentTextColor()); - assertEquals(Color.GREEN, ((TextView) adapter.getView(1, null, null)).getCurrentTextColor()); - assertEquals(Color.BLUE, ((TextView) adapter.getView(2, null, null)).getCurrentTextColor()); - assertEquals( - Color.RED, ((TextView) adapter.getDropDownView(0, null, null)).getCurrentTextColor()); - assertEquals( - Color.GREEN, ((TextView) adapter.getDropDownView(1, null, null)).getCurrentTextColor()); - assertEquals( - Color.BLUE, ((TextView) adapter.getDropDownView(2, null, null)).getCurrentTextColor()); - getTestModule().setPrimaryColor("black"); - waitForBridgeAndUIIdle(); - assertEquals(Color.BLACK, ((TextView) adapter.getView(0, null, null)).getCurrentTextColor()); - assertEquals(Color.BLACK, ((TextView) adapter.getView(1, null, null)).getCurrentTextColor()); - assertEquals(Color.BLACK, ((TextView) adapter.getView(2, null, null)).getCurrentTextColor()); - assertEquals( - Color.RED, ((TextView) adapter.getDropDownView(0, null, null)).getCurrentTextColor()); - assertEquals( - Color.GREEN, ((TextView) adapter.getDropDownView(1, null, null)).getCurrentTextColor()); - assertEquals( - Color.BLUE, ((TextView) adapter.getDropDownView(2, null, null)).getCurrentTextColor()); - } - - public void testDropdownPicker() { - ReactPicker spinner = getViewAtPath(0, 1); - - assertEquals(Spinner.MODE_DROPDOWN, spinner.getMode()); - } - - public void testDisabledPicker() { - ReactPicker spinner = getViewAtPath(0, 2); - - assertFalse(spinner.isEnabled()); - } - - public void testUpdateSelectedItem() { - ReactPicker spinner = getViewAtPath(0, 0); - assertEquals(1, spinner.getSelectedItemPosition()); - - getTestModule().selectItem(2); - waitForBridgeAndUIIdle(); - getInstrumentation().waitForIdleSync(); - - assertEquals(2, spinner.getSelectedItemPosition()); - } - - public void testUpdateMode() { - ReactPicker spinner = getViewAtPath(0, 1); - assertEquals(Spinner.MODE_DROPDOWN, spinner.getMode()); - - getTestModule().setMode("dialog"); - waitForBridgeAndUIIdle(); - getInstrumentation().waitForIdleSync(); - - // changing the spinner mode in JS actually creates a new component on the native side, as - // there's no way to change the mode once you have constructed a Spinner. - ReactPicker newPicker = getViewAtPath(0, 1); - assertTrue(spinner != newPicker); - assertEquals(Spinner.MODE_DIALOG, newPicker.getMode()); - } - - public void testOnSelect() throws Throwable { - runTestOnUiThread( - new Runnable() { - @Override - public void run() { - ReactPicker spinner = getViewAtPath(0, 0); - spinner.setSelection(2); - } - }); - - getInstrumentation().waitForIdleSync(); - waitForBridgeAndUIIdle(); - - List selections = mRecordingModule.getSelections(); - assertEquals(1, selections.size()); - assertEquals(2, (int) selections.get(0)); - } - - public void testOnSelectSequence() throws Throwable { - updateFirstSpinnerAndCheckLastSpinnerMatches(0); - updateFirstSpinnerAndCheckLastSpinnerMatches(2); - updateFirstSpinnerAndCheckLastSpinnerMatches(0); - updateFirstSpinnerAndCheckLastSpinnerMatches(2); - } - - private void updateFirstSpinnerAndCheckLastSpinnerMatches(final int indexToSelect) - throws Throwable { - // The last spinner has the same selected value as the first one. - // Test that user selection is propagated correctly to JS, to setState, and to Spinners. - runTestOnUiThread( - new Runnable() { - @Override - public void run() { - ReactPicker spinner = getViewAtPath(0, 0); - spinner.setSelection(indexToSelect); - } - }); - getInstrumentation().waitForIdleSync(); - waitForBridgeAndUIIdle(); - - ReactPicker spinnerInSync = getViewAtPath(0, 3); - assertEquals( - "Picker selection was not updated correctly via setState.", - indexToSelect, - spinnerInSync.getSelectedItemPosition()); - } - - private PickerAndroidTestModule getTestModule() { - return getReactContext().getCatalystInstance().getJSModule(PickerAndroidTestModule.class); - } -} diff --git a/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js b/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js deleted file mode 100644 index a4e0cc0ae67..00000000000 --- a/ReactAndroid/src/androidTest/js/PickerAndroidTestModule.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - */ - -'use strict'; - -const React = require('react'); -const {NativeModules, Picker, View} = require('react-native'); -const BatchedBridge = require('react-native/Libraries/BatchedBridge/BatchedBridge'); - -const {Recording: RecordingModule} = NativeModules; -const Item = Picker.Item; - -let appInstance; - -class PickerAndroidTestApp extends React.Component { - state = { - selected: 1, - mode: 'dropdown', - style: {}, - }; - - UNSAFE_componentWillMount() { - appInstance = this; - } - - render() { - return ( - - - - - - - - - - - - - - - - - - - - - ); - } - - onValueChange = value => { - this.setState({selected: value}); - RecordingModule.recordSelection(value); - }; -} - -const PickerAndroidTestModule = { - PickerAndroidTestApp: PickerAndroidTestApp, - selectItem: function(value) { - appInstance.setState({selected: value}); - }, - setMode: function(mode) { - appInstance.setState({mode: mode}); - }, - setPrimaryColor: function(color) { - appInstance.setState({style: {color}}); - }, -}; - -BatchedBridge.registerCallableModule( - 'PickerAndroidTestModule', - PickerAndroidTestModule, -); - -module.exports = PickerAndroidTestModule; diff --git a/ReactAndroid/src/androidTest/js/TestBundle.js b/ReactAndroid/src/androidTest/js/TestBundle.js index 4608c1780d3..709f469b118 100644 --- a/ReactAndroid/src/androidTest/js/TestBundle.js +++ b/ReactAndroid/src/androidTest/js/TestBundle.js @@ -24,7 +24,6 @@ require('./UIManagerTestModule'); require('./CatalystRootViewTestModule'); require('./DatePickerDialogTestModule'); require('./MeasureLayoutTestModule'); -require('./PickerAndroidTestModule'); require('./ScrollViewTestModule'); require('./ShareTestModule'); require('./SwipeRefreshLayoutTestModule'); @@ -86,10 +85,6 @@ const apps = [ appKey: 'NativeIdTestApp', component: () => require('./NativeIdTestModule').NativeIdTestApp, }, - { - appKey: 'PickerAndroidTestApp', - component: () => require('./PickerAndroidTestModule').PickerAndroidTestApp, - }, { appKey: 'ScrollViewTestApp', component: () => require('./ScrollViewTestModule').ScrollViewTestApp,