Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,20 @@ import android.view.ViewGroup
import android.view.WindowInsets
import android.view.WindowManager
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.ReactTestHelper
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
import com.facebook.react.uimanager.DisplayMetricsHolder
import com.facebook.react.uimanager.UIManagerModule
import com.facebook.testutils.shadows.ShadowArguments
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions.*
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.doNothing
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.times
Expand All @@ -38,25 +41,24 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

@Config(shadows = [ShadowArguments::class])
@Config(shadows = [ShadowArguments::class, ShadowSoLoader::class])
@RunWith(RobolectricTestRunner::class)
class RootViewTest {

private lateinit var reactContext: BridgeReactContext
private lateinit var catalystInstanceMock: CatalystInstance
private lateinit var reactContext: ReactApplicationContext

@Before
fun setUp() {
ReactNativeFeatureFlagsForTests.setUp()

catalystInstanceMock = ReactTestHelper.createMockCatalystInstance()
reactContext = spy(BridgeReactContext(RuntimeEnvironment.getApplication()))
reactContext.initializeWithInstance(catalystInstanceMock)
reactContext = spy(createTestReactApplicationContext(RuntimeEnvironment.getApplication()))
doNothing().whenever(reactContext).emitDeviceEvent(any(), any())

DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(reactContext)
val uiManagerModuleMock: UIManagerModule = mock()
whenever(catalystInstanceMock.getNativeModule(UIManagerModule::class.java))
.thenReturn(uiManagerModuleMock)
doReturn(uiManagerModuleMock)
.whenever(reactContext)
.getNativeModule(UIManagerModule::class.java)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.shadow.api.Shadow
Expand Down Expand Up @@ -76,7 +77,8 @@ class FabricUIManagerPullModelTest {
fun setup() {
ReactNativeFeatureFlagsForTests.setUp()
overrideFeatureFlags()
reactContext = ReactTestHelper.createCatalystContextForTest()
reactContext =
ReactTestHelper.createTestReactApplicationContext(RuntimeEnvironment.getApplication())
underTest =
FabricUIManager(
reactContext,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

@RunWith(RobolectricTestRunner::class)
Expand All @@ -54,7 +55,8 @@ class MountingManagerAnimatedPropsTest {
@Before
fun setUp() {
ReactNativeFeatureFlagsForTests.setUp()
val reactContext = ReactTestHelper.createCatalystContextForTest()
val reactContext =
ReactTestHelper.createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themedReactContext = ThemedReactContext(reactContext, reactContext, null, -1)
mountingManager =
MountingManager(ViewManagerRegistry(listOf<ViewManager<*, *>>(ReactViewManager())), {})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,29 @@
* LICENSE file in the root directory of this source tree.
*/

@file:Suppress("DEPRECATION")

package com.facebook.react.fabric

import com.facebook.react.ReactRootView
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext
import com.facebook.react.fabric.mounting.MountingManager
import com.facebook.react.fabric.mounting.MountingManager.MountItemExecutor
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.ViewManager
import com.facebook.react.uimanager.ViewManagerRegistry
import com.facebook.react.views.view.ReactViewManager
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

/** Tests [FabricUIManager] */
@RunWith(RobolectricTestRunner::class)
@Config(shadows = [ShadowSoLoader::class])
class MountingManagerTest {
private lateinit var mountingManager: MountingManager
private lateinit var mountItemExecutor: MountItemExecutor
Expand All @@ -37,8 +37,7 @@ class MountingManagerTest {
@Before
fun setUp() {
ReactNativeFeatureFlagsForTests.setUp()
val reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
reactContext.initializeWithInstance(createMockCatalystInstance())
val reactContext = createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themedReactContext = ThemedReactContext(reactContext, reactContext, null, -1)
val viewManagers = listOf<ViewManager<*, *>>(ReactViewManager())
mountItemExecutor = MountItemExecutor {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

/**
Expand Down Expand Up @@ -65,7 +66,8 @@ class SurfaceMountingManagerSynchronousMountPropsTest {
@Before
fun setUp() {
ReactNativeFeatureFlagsForTests.setUp()
val reactContext = ReactTestHelper.createCatalystContextForTest()
val reactContext =
ReactTestHelper.createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themedReactContext = ThemedReactContext(reactContext, reactContext, null, -1)
mountingManager =
MountingManager(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,14 @@ import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.ViewManager
import com.facebook.react.uimanager.ViewManagerRegistry
import com.facebook.react.views.view.ReactViewManager
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

/**
* Tests for [SurfaceMountingManager] view lifecycle around preallocateView, deleteView, and
Expand All @@ -42,6 +45,7 @@ import org.robolectric.RobolectricTestRunner
* See T223288217.
*/
@RunWith(RobolectricTestRunner::class)
@Config(shadows = [ShadowSoLoader::class])
class SurfaceMountingManagerTest {
private lateinit var mountingManager: MountingManager
private lateinit var themedReactContext: ThemedReactContext
Expand All @@ -50,7 +54,8 @@ class SurfaceMountingManagerTest {
@Before
fun setUp() {
ReactNativeFeatureFlagsForTests.setUp()
val reactContext = ReactTestHelper.createCatalystContextForTest()
val reactContext =
ReactTestHelper.createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themedReactContext = ThemedReactContext(reactContext, reactContext, null, -1)
mountingManager =
MountingManager(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
* LICENSE file in the root directory of this source tree.
*/

@file:Suppress("DEPRECATION")

package com.facebook.react.modules.deviceinfo

import android.app.Activity
Expand All @@ -20,10 +18,10 @@ import androidx.core.view.WindowInsetsCompat
import androidx.window.layout.WindowMetrics
import androidx.window.layout.WindowMetricsCalculator
import androidx.window.layout.WindowMetricsCalculatorDecorator
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.ReactTestHelper
import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext
import com.facebook.react.bridge.WritableMap
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
import com.facebook.react.uimanager.DisplayMetricsHolder
Expand All @@ -43,6 +41,7 @@ import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers
import org.mockito.MockedStatic
import org.mockito.Mockito.mockStatic
import org.mockito.kotlin.doNothing
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
Expand All @@ -69,7 +68,7 @@ class DeviceInfoModuleTest : TestCase() {
private lateinit var deviceInfoModule: DeviceInfoModule
private lateinit var fakePortraitDisplayMetrics: WritableMap
private lateinit var fakeLandscapeDisplayMetrics: WritableMap
private lateinit var reactContext: BridgeReactContext
private lateinit var reactContext: ReactApplicationContext
private lateinit var displayMetricsHolder: MockedStatic<DisplayMetricsHolder>

@Before
Expand All @@ -83,9 +82,11 @@ class DeviceInfoModuleTest : TestCase() {
fakeLandscapeDisplayMetrics.putInt("height", 100)

displayMetricsHolder = mockStatic(DisplayMetricsHolder::class.java)
reactContext = spy(BridgeReactContext(RuntimeEnvironment.getApplication()))
val catalystInstanceMock = ReactTestHelper.createMockCatalystInstance()
reactContext.initializeWithInstance(catalystInstanceMock)
reactContext = spy(createTestReactApplicationContext(RuntimeEnvironment.getApplication()))
doReturn(true).whenever(reactContext).hasActiveReactInstance()
doNothing()
.whenever(reactContext)
.emitDeviceEvent(ArgumentMatchers.anyString(), ArgumentMatchers.any())
deviceInfoModule = spy(DeviceInfoModule(reactContext))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,17 @@
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests;
import com.facebook.react.views.view.ReactViewGroup;
import com.facebook.react.views.view.ReactViewManager;
import com.facebook.testutils.shadows.ShadowSoLoader;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowSoLoader.class)
public class BaseViewManagerDelegateTest {
private ReactViewManager viewManager;
private ReactViewGroup view;
Expand All @@ -34,7 +38,9 @@ public void setUp() {
// (non-JNI) accessor so Robolectric doesn't try to load react_featureflagsjni.
ReactNativeFeatureFlagsForTests.INSTANCE.setUp();
viewManager = mock(ReactViewManager.class);
ReactApplicationContext context = ReactTestHelper.createCatalystContextForTest();
ReactApplicationContext context =
ReactTestHelper.INSTANCE.createTestReactApplicationContext(
RuntimeEnvironment.getApplication());
ThemedReactContext themedReactContext = new ThemedReactContext(context, context, null, -1);
view = new ReactViewGroup(themedReactContext);
delegate = new BaseViewManagerDelegate<>(viewManager) {};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import android.os.Bundle
import android.view.accessibility.AccessibilityNodeInfo
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import com.facebook.react.R
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.JavaOnlyArray
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext
import com.facebook.react.bridge.UIManager
import com.facebook.react.bridge.WritableMap
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
Expand All @@ -26,33 +26,35 @@ import com.facebook.react.uimanager.events.EventDispatcher
import com.facebook.react.uimanager.events.RCTEventEmitter
import com.facebook.react.views.view.ReactViewGroup
import com.facebook.testutils.shadows.ShadowArguments
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mockStatic
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

@Config(shadows = [ShadowArguments::class])
@Config(shadows = [ShadowArguments::class, ShadowSoLoader::class])
@RunWith(RobolectricTestRunner::class)
class ReactAccessibilityDelegateTest {
private lateinit var view: ReactViewGroup
private lateinit var reactContext: BridgeReactContext
private lateinit var reactContext: ReactApplicationContext
private lateinit var themedReactContext: ThemedReactContext
private lateinit var accessibilityDelegate: ReactAccessibilityDelegate

@Before
fun setUp() {
ReactNativeFeatureFlagsForTests.setUp()
reactContext = BridgeReactContext(RuntimeEnvironment.getApplication())
reactContext.initializeWithInstance(createMockCatalystInstance())
reactContext = spy(createTestReactApplicationContext(RuntimeEnvironment.getApplication()))
themedReactContext = ThemedReactContext(reactContext, reactContext, null, -1)
view = ReactViewGroup(themedReactContext).apply { id = 100 }
accessibilityDelegate = ReactAccessibilityDelegate(view, false, 0)
Expand Down Expand Up @@ -266,6 +268,7 @@ class ReactAccessibilityDelegateTest {
whenever(uiManager.eventDispatcher).thenReturn(eventDispatcher)
val uiManagerHelper = mockStatic(UIManagerHelper::class.java)
try {
doReturn(true).whenever(reactContext).hasActiveReactInstance()
uiManagerHelper
.`when`<UIManager?> {
UIManagerHelper.getUIManager(themedReactContext, UIManagerType.FABRIC)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,28 @@
* LICENSE file in the root directory of this source tree.
*/

// TODO T207169925: Migrate CatalystInstance to Reacthost and remove the Suppress("DEPRECATION")
// annotation
@file:Suppress("DEPRECATION")

package com.facebook.react.uimanager

import android.view.View
import com.facebook.react.bridge.BridgeReactContext
import com.facebook.react.bridge.CatalystInstance
import com.facebook.react.bridge.JavaOnlyMap
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactTestHelper.createTestReactApplicationContext
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
import com.facebook.react.touch.JSResponderHandler
import com.facebook.react.uimanager.annotations.ReactProp
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

/** Verify [View] view property being applied properly by [SimpleViewManager] */
@RunWith(RobolectricTestRunner::class)
@Config(shadows = [ShadowSoLoader::class])
class SimpleViewPropertyTest {

private class ConcreteViewManager : SimpleViewManager<View>() {
Expand All @@ -49,17 +47,14 @@ class SimpleViewPropertyTest {
}
}

private lateinit var context: BridgeReactContext
private lateinit var catalystInstanceMock: CatalystInstance
private lateinit var context: ReactApplicationContext
private lateinit var themedContext: ThemedReactContext
private lateinit var manager: ConcreteViewManager

@Before
fun setup() {
ReactNativeFeatureFlagsForTests.setUp()
context = BridgeReactContext(RuntimeEnvironment.getApplication())
catalystInstanceMock = createMockCatalystInstance()
context.initializeWithInstance(catalystInstanceMock)
context = createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themedContext = ThemedReactContext(context, context, null, surfaceId)
manager = ConcreteViewManager()
}
Expand Down
Loading
Loading