Skip to content
Open
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 @@ -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 @@ -42,6 +40,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 @@ -68,7 +67,7 @@ class DeviceInfoModuleTest {
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 @@ -82,9 +81,11 @@ class DeviceInfoModuleTest {
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 @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@
* 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.views.image

import android.graphics.Color
Expand All @@ -19,10 +15,9 @@ import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder
import com.facebook.drawee.drawable.ScalingUtils
import com.facebook.imagepipeline.request.ImageRequest
import com.facebook.react.bridge.Arguments
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.common.ReactConstants
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
import com.facebook.react.modules.fresco.ReactNetworkImageRequest
Expand All @@ -37,6 +32,7 @@ import com.facebook.react.util.RNLog
import com.facebook.react.views.imagehelper.ImageSource
import com.facebook.soloader.SoLoader
import com.facebook.testutils.shadows.ShadowArguments
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions.assertThat
import org.junit.After
import org.junit.Before
Expand All @@ -61,33 +57,29 @@ import org.robolectric.annotation.Config
* Verify that [com.facebook.drawee.drawable.ScalingUtils] properties are being applied correctly by
* [ReactImageManager].
*/
@Config(shadows = [ShadowArguments::class])
@Config(shadows = [ShadowArguments::class, ShadowSoLoader::class])
@RunWith(RobolectricTestRunner::class)
class ReactImagePropertyTest {

private lateinit var context: BridgeReactContext
private lateinit var catalystInstanceMock: CatalystInstance
private lateinit var context: ReactApplicationContext
private lateinit var themeContext: ThemedReactContext
private lateinit var rnLog: MockedStatic<RNLog>
private lateinit var flogMock: MockedStatic<FLog>

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

rnLog = mockStatic(RNLog::class.java)
rnLog.`when`<Boolean> { RNLog.w(any(), anyString()) }.thenAnswer {}

flogMock = mockStatic(FLog::class.java)

SoLoader.setInTestMode()
context = BridgeReactContext(RuntimeEnvironment.getApplication())
catalystInstanceMock = createMockCatalystInstance()
context.initializeWithInstance(catalystInstanceMock)
context = createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themeContext = ThemedReactContext(context, context, null, -1)
Fresco.initialize(context)
DisplayMetricsHolder.setScreenDisplayMetrics(DisplayMetrics())

ReactNativeFeatureFlagsForTests.setUp()
}

@After
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ import android.view.InputDevice
import android.view.MotionEvent
import android.view.View
import android.widget.FrameLayout
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.ReactTestHelper.createTestReactApplicationContext
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
import com.facebook.react.uimanager.DisplayMetricsHolder
import com.facebook.react.uimanager.ReactStylesDiffMap
import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.UIManagerHelper
import com.facebook.react.uimanager.events.EventDispatcher
import com.facebook.soloader.SoLoader
import com.facebook.testutils.shadows.ShadowSoLoader
import org.assertj.core.api.Assertions.assertThat
import org.junit.After
import org.junit.Before
Expand All @@ -38,10 +38,12 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

/** Verifies the direction of wheel and joystick scrolling in regular and inverted ScrollViews. */
@SuppressLint("DeprecatedClass", "DeprecatedMethod")
@RunWith(RobolectricTestRunner::class)
@Config(shadows = [ShadowSoLoader::class])
class ReactScrollViewInvertedScrollTest {

private lateinit var themedContext: ThemedReactContext
Expand All @@ -51,8 +53,7 @@ class ReactScrollViewInvertedScrollTest {
fun setup() {
ReactNativeFeatureFlagsForTests.setUp()
SoLoader.setInTestMode()
val context = BridgeReactContext(RuntimeEnvironment.getApplication())
context.initializeWithInstance(createMockCatalystInstance())
val context = createTestReactApplicationContext(RuntimeEnvironment.getApplication())
themedContext = ThemedReactContext(context, context, null, -1)
DisplayMetricsHolder.setScreenDisplayMetrics(DisplayMetrics())
uiManagerHelperMock = mockStatic(UIManagerHelper::class.java)
Expand Down
Loading
Loading