From e8f9b0e24d83b02869fadadfaf67bcdf227f81fb Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Tue, 7 Jan 2025 16:45:22 +0100 Subject: [PATCH] add RUMActivityTests --- .../raygun4android/rum/RUMActivityTest.kt | 57 +++++++++++++++++++ .../raygun4android/rum/RUMFragmentTest.kt | 7 ++- 2 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 provider/src/test/java/com/raygun/raygun4android/rum/RUMActivityTest.kt diff --git a/provider/src/test/java/com/raygun/raygun4android/rum/RUMActivityTest.kt b/provider/src/test/java/com/raygun/raygun4android/rum/RUMActivityTest.kt new file mode 100644 index 0000000..939c6cf --- /dev/null +++ b/provider/src/test/java/com/raygun/raygun4android/rum/RUMActivityTest.kt @@ -0,0 +1,57 @@ +package com.raygun.raygun4android.rum + +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import com.raygun.raygun4android.RaygunRUMEventType +import com.raygun.raygun4android.TestTree +import org.junit.After +import org.junit.Before +import org.junit.Test +import org.mockito.Mockito.anyLong +import org.mockito.Mockito.mock +import org.mockito.kotlin.eq +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever +import timber.log.Timber + +class RUMActivityTest { + @Before + fun setup() { + Timber.plant(TestTree()) + } + + @After + fun tearDown() { + Timber.uprootAll() + } + + @Test + fun activityLifecycle() { + val mockActivity = mock(AppCompatActivity::class.java) + val mockFragmentManager = mock(FragmentManager::class.java) + whenever(mockActivity.supportFragmentManager).thenReturn(mockFragmentManager) + val mockRUM = mock(RUM::class.java) + val rumFragment = RUMFragment(mockRUM) + val rumActivity = RUMActivity(mockRUM, rumFragment) + + // Simulate lifecycle from Created to Destroyed + rumActivity.onActivityCreated(mockActivity, null) + rumActivity.onActivityStarted(mockActivity) + rumActivity.onActivityResumed(mockActivity) + rumActivity.onActivityPaused(mockActivity) + rumActivity.onActivityStopped(mockActivity) + rumActivity.onActivityDestroyed(mockActivity) + + // onActivityResumed should have called to sendRUMTimingEvent + verify(mockRUM).sendRUMTimingEvent( + eq(RaygunRUMEventType.ACTIVITY_LOADED), + eq("AppCompatActivity"), + anyLong() + ) + + // seen should be called for each "onActivity..." + verify(mockRUM, times(6)).seen() + } +} \ No newline at end of file diff --git a/provider/src/test/java/com/raygun/raygun4android/rum/RUMFragmentTest.kt b/provider/src/test/java/com/raygun/raygun4android/rum/RUMFragmentTest.kt index c0e7b45..f762a77 100644 --- a/provider/src/test/java/com/raygun/raygun4android/rum/RUMFragmentTest.kt +++ b/provider/src/test/java/com/raygun/raygun4android/rum/RUMFragmentTest.kt @@ -15,6 +15,7 @@ import org.mockito.Mockito.mock import org.mockito.junit.MockitoJUnitRunner import org.mockito.kotlin.any import org.mockito.kotlin.eq +import org.mockito.kotlin.times import org.mockito.kotlin.verify import timber.log.Timber @@ -30,9 +31,6 @@ class RUMFragmentTest { Timber.uprootAll() } - private lateinit var mockFragmentManager: FragmentManager - private lateinit var mockRUM: RUM - @Test fun fragmentLifecycle() { val mockFragmentManager = mock(FragmentManager::class.java) @@ -54,5 +52,8 @@ class RUMFragmentTest { eq("Fragment"), anyLong() ) + + // seen should be called for each "onFragment..." + verify(mockRUM, times(6)).seen() } } \ No newline at end of file