From add10419b65c95e45f4e256c44b6068ba8c07c85 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Mon, 26 Jun 2023 16:58:14 -0700 Subject: [PATCH] Test lifecycle evetns in ReactHost (#37985) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/37985 Test lifecycle evetns in ReactHost changelog: [internal] internal Reviewed By: cortinico Differential Revision: D46814334 fbshipit-source-id: 888574c3099ddceec4f7f0aaaf14b883b1a4dc0b --- .../facebook/react/bridgeless/ReactHostTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridgeless/ReactHostTest.java b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridgeless/ReactHostTest.java index 2aa0634d341..0e3bd32d2f7 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridgeless/ReactHostTest.java +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridgeless/ReactHostTest.java @@ -26,6 +26,7 @@ import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.UIManager; import com.facebook.react.bridgeless.internal.bolts.Task; import com.facebook.react.bridgeless.internal.bolts.TaskCompletionSource; +import com.facebook.react.common.LifecycleState; import com.facebook.react.devsupport.interfaces.PackagerStatusCallback; import com.facebook.react.fabric.ComponentFactory; import com.facebook.react.uimanager.events.BlackHoleEventDispatcher; @@ -168,6 +169,20 @@ public class ReactHostTest { assertThat(mReactHost.getCurrentReactContext()).isNotEqualTo(oldReactContext); } + @Test + public void testLifecycleStateChanges() throws Exception { + statAndTestReactHost(); + + assertThat(mReactHost.isInstanceInitialized()).isTrue(); + assertThat(mReactHost.getLifecycleState()).isEqualTo(LifecycleState.BEFORE_CREATE); + mReactHost.onHostResume(mActivityController.get()); + assertThat(mReactHost.getLifecycleState()).isEqualTo(LifecycleState.RESUMED); + mReactHost.onHostPause(mActivityController.get()); + assertThat(mReactHost.getLifecycleState()).isEqualTo(LifecycleState.BEFORE_RESUME); + mReactHost.onHostDestroy(mActivityController.get()); + assertThat(mReactHost.getLifecycleState()).isEqualTo(LifecycleState.BEFORE_CREATE); + } + private static void waitForTaskUIThread(Task task) throws InterruptedException { boolean isTaskCompleted = false; while (!isTaskCompleted) {