mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Convert ReactTestHelper (#37768)
Summary: As part of the effort to Kotlin-fy React Native tests, I've converted [ReactTestHelper](https://github.com/facebook/react-native/tree/main/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/ReactTestHelper.java) to Kotlin. ## Changelog: [Internal] [Changed] - Convert ReactTestHelper to Kotlin Pull Request resolved: https://github.com/facebook/react-native/pull/37768 Test Plan: Tests pass: ./gradlew :packages:react-native:ReactAndroid:test Formatted with [KtFmt](https://facebook.github.io/ktfmt/) Reviewed By: rshest Differential Revision: D46587427 Pulled By: cortinico fbshipit-source-id: 82d08d01cf4c7cb7c05a63696e1acdacf60b1ad5
This commit is contained in:
committed by
Facebook GitHub Bot
parent
0aa330801b
commit
6ebee63ab7
-59
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and 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.bridge;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.facebook.react.bridge.queue.MessageQueueThreadSpec;
|
||||
import com.facebook.react.bridge.queue.QueueThreadExceptionHandler;
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfiguration;
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfigurationImpl;
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
/** Utility for creating pre-configured instances of core react components for tests. */
|
||||
public class ReactTestHelper {
|
||||
|
||||
/**
|
||||
* @return a ReactApplicationContext that has a CatalystInstance mock returned by {@link
|
||||
* #createMockCatalystInstance}
|
||||
*/
|
||||
public static ReactApplicationContext createCatalystContextForTest() {
|
||||
ReactApplicationContext context = new ReactApplicationContext(RuntimeEnvironment.application);
|
||||
context.initializeWithInstance(createMockCatalystInstance());
|
||||
return context;
|
||||
}
|
||||
|
||||
/** @return a CatalystInstance mock that has a default working ReactQueueConfiguration. */
|
||||
public static CatalystInstance createMockCatalystInstance() {
|
||||
ReactQueueConfigurationSpec spec =
|
||||
ReactQueueConfigurationSpec.builder()
|
||||
.setJSQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
|
||||
.setNativeModulesQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
|
||||
.build();
|
||||
ReactQueueConfiguration ReactQueueConfiguration =
|
||||
ReactQueueConfigurationImpl.create(
|
||||
spec,
|
||||
new QueueThreadExceptionHandler() {
|
||||
@Override
|
||||
public void handleException(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
|
||||
CatalystInstance reactInstance = mock(CatalystInstance.class);
|
||||
when(reactInstance.getReactQueueConfiguration()).thenReturn(ReactQueueConfiguration);
|
||||
when(reactInstance.getNativeModule(UIManagerModule.class))
|
||||
.thenReturn(mock(UIManagerModule.class));
|
||||
when(reactInstance.isDestroyed()).thenReturn(false);
|
||||
|
||||
return reactInstance;
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and 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.bridge
|
||||
|
||||
import com.facebook.react.bridge.queue.MessageQueueThreadSpec
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfiguration
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfigurationImpl
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec
|
||||
import com.facebook.react.uimanager.UIManagerModule
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.`when` as whenever
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
|
||||
/** Utility for creating pre-configured instances of core react components for tests. */
|
||||
object ReactTestHelper {
|
||||
/**
|
||||
* @return a ReactApplicationContext that has a CatalystInstance mock returned by
|
||||
* [createMockCatalystInstance]
|
||||
*/
|
||||
@JvmStatic
|
||||
fun createCatalystContextForTest(): ReactApplicationContext =
|
||||
ReactApplicationContext(RuntimeEnvironment.application).apply {
|
||||
initializeWithInstance(createMockCatalystInstance())
|
||||
}
|
||||
|
||||
/** @return a CatalystInstance mock that has a default working ReactQueueConfiguration. */
|
||||
@JvmStatic
|
||||
fun createMockCatalystInstance(): CatalystInstance {
|
||||
val spec: ReactQueueConfigurationSpec =
|
||||
ReactQueueConfigurationSpec.builder()
|
||||
.setJSQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
|
||||
.setNativeModulesQueueThreadSpec(MessageQueueThreadSpec.mainThreadSpec())
|
||||
.build()
|
||||
val reactQueueConfiguration: ReactQueueConfiguration =
|
||||
ReactQueueConfigurationImpl.create(spec) { e -> throw RuntimeException(e) }
|
||||
val reactInstance: CatalystInstance = mock(CatalystInstance::class.java)
|
||||
whenever(reactInstance.getReactQueueConfiguration()).thenReturn(reactQueueConfiguration)
|
||||
whenever(reactInstance.getNativeModule(UIManagerModule::class.java))
|
||||
.thenReturn(mock(UIManagerModule::class.java))
|
||||
whenever(reactInstance.isDestroyed()).thenReturn(false)
|
||||
return reactInstance
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user