@@ -70,18 +70,21 @@ class AndroidOptionsInitializerTest {
70
70
useRealContext : Boolean = false,
71
71
configureOptions : SentryAndroidOptions .() -> Unit = {},
72
72
configureContext : Context .() -> Unit = {},
73
- assets : AssetManager ? = null
73
+ assets : AssetManager ? = null,
74
+ customMockContext : Context ? = null,
75
+ isFragmentAvailable : Boolean = false
74
76
) {
75
77
sentryOptions.executorService = ImmediateExecutorService ()
76
- mockContext = if (metadata != null ) {
77
- ContextUtilsTestHelper .mockMetaData(
78
- mockContext = ContextUtilsTestHelper .createMockContext(hasAppContext),
79
- metaData = metadata,
80
- assets = assets
81
- )
82
- } else {
83
- ContextUtilsTestHelper .createMockContext(hasAppContext)
84
- }
78
+ mockContext = customMockContext
79
+ ? : if (metadata != null ) {
80
+ ContextUtilsTestHelper .mockMetaData(
81
+ mockContext = ContextUtilsTestHelper .createMockContext(hasAppContext),
82
+ metaData = metadata,
83
+ assets = assets
84
+ )
85
+ } else {
86
+ ContextUtilsTestHelper .createMockContext(hasAppContext)
87
+ }
85
88
whenever(mockContext.cacheDir).thenReturn(file)
86
89
if (mockContext.applicationContext != null ) {
87
90
whenever(mockContext.applicationContext.cacheDir).thenReturn(file)
@@ -101,7 +104,7 @@ class AndroidOptionsInitializerTest {
101
104
BuildInfoProvider (AndroidLogger ()),
102
105
loadClass,
103
106
activityFramesTracker,
104
- false ,
107
+ isFragmentAvailable ,
105
108
false ,
106
109
false
107
110
)
@@ -880,4 +883,24 @@ class AndroidOptionsInitializerTest {
880
883
assertFalse { fixture.sentryOptions.socketTagger is AndroidSocketTagger }
881
884
assertFalse { fixture.sentryOptions.compositePerformanceCollector is DefaultCompositePerformanceCollector }
882
885
}
886
+
887
+ @Test
888
+ fun `When given context which is not instance of Application use applicationContext to initialize activityLifecycleCallbacks integrations` () {
889
+ fixture.initSut(isFragmentAvailable = true )
890
+
891
+ assertNotNull(fixture.sentryOptions.integrations.firstOrNull { it is ActivityBreadcrumbsIntegration })
892
+ assertNotNull(fixture.sentryOptions.integrations.firstOrNull { it is CurrentActivityIntegration })
893
+ assertNotNull(fixture.sentryOptions.integrations.firstOrNull { it is UserInteractionIntegration })
894
+ assertNotNull(fixture.sentryOptions.integrations.firstOrNull { it is FragmentLifecycleIntegration }) // Only when fragment is available
895
+ }
896
+
897
+ @Test
898
+ fun `When given context applicationContext is not App do not initialize activityLifecycleCallbacks integrations` () {
899
+ fixture.initSut(customMockContext = mock<Context >())
900
+
901
+ assertNull(fixture.sentryOptions.integrations.firstOrNull { it is ActivityBreadcrumbsIntegration })
902
+ assertNull(fixture.sentryOptions.integrations.firstOrNull { it is CurrentActivityIntegration })
903
+ assertNull(fixture.sentryOptions.integrations.firstOrNull { it is UserInteractionIntegration })
904
+ assertNull(fixture.sentryOptions.integrations.firstOrNull { it is FragmentLifecycleIntegration }) // Only when fragment is available
905
+ }
883
906
}
0 commit comments