@@ -13,7 +13,6 @@ import com.datadog.android.api.context.TimeInfo
13
13
import com.datadog.android.api.feature.FeatureScope
14
14
import com.datadog.android.api.storage.DataWriter
15
15
import com.datadog.android.api.storage.EventBatchWriter
16
- import com.datadog.android.core.InternalSdkCore
17
16
import com.datadog.android.core.internal.net.FirstPartyHostHeaderTypeResolver
18
17
import com.datadog.android.rum.RumSessionListener
19
18
import com.datadog.android.rum.internal.FeaturesContextResolver
@@ -24,7 +23,12 @@ import com.datadog.android.rum.internal.vitals.VitalMonitor
24
23
import com.datadog.android.rum.metric.interactiontonextview.LastInteractionIdentifier
25
24
import com.datadog.android.rum.metric.networksettled.InitialResourceIdentifier
26
25
import com.datadog.android.rum.model.ViewEvent
26
+ import com.datadog.android.rum.utils.config.GlobalRumMonitorTestConfiguration
27
27
import com.datadog.android.rum.utils.forge.Configurator
28
+ import com.datadog.tools.unit.annotations.TestConfigurationsProvider
29
+ import com.datadog.tools.unit.extensions.TestConfigurationExtension
30
+ import com.datadog.tools.unit.extensions.config.TestConfiguration
31
+ import com.datadog.tools.unit.forge.exhaustiveAttributes
28
32
import fr.xgouchet.elmyr.Forge
29
33
import fr.xgouchet.elmyr.annotation.BoolForgery
30
34
import fr.xgouchet.elmyr.annotation.FloatForgery
@@ -52,17 +56,15 @@ import kotlin.math.min
52
56
53
57
@Extensions(
54
58
ExtendWith (MockitoExtension ::class ),
55
- ExtendWith (ForgeExtension ::class )
59
+ ExtendWith (ForgeExtension ::class ),
60
+ ExtendWith (TestConfigurationExtension ::class )
56
61
)
57
62
@MockitoSettings(strictness = Strictness .LENIENT )
58
63
@ForgeConfiguration(Configurator ::class )
59
64
internal class RumApplicationScopeAttributePropagationTest {
60
65
61
66
lateinit var testedScope: RumApplicationScope
62
67
63
- @Mock
64
- lateinit var mockSdkCore: InternalSdkCore
65
-
66
68
@Mock
67
69
lateinit var mockParentScope: RumScope
68
70
@@ -75,9 +77,6 @@ internal class RumApplicationScopeAttributePropagationTest {
75
77
@Mock
76
78
lateinit var mockSessionListener: RumSessionListener
77
79
78
- @Mock
79
- lateinit var mockNetworkSettledResourceIdentifier: InitialResourceIdentifier
80
-
81
80
@Mock
82
81
lateinit var mockLastInteractionIdentifier: LastInteractionIdentifier
83
82
@@ -103,10 +102,7 @@ internal class RumApplicationScopeAttributePropagationTest {
103
102
lateinit var mockFeaturesContextResolver: FeaturesContextResolver
104
103
105
104
@Mock
106
- lateinit var mockViewChangedListener: RumViewChangedListener
107
-
108
- @Mock
109
- private lateinit var mockSessionEndedMetricDispatcher: SessionMetricDispatcher
105
+ lateinit var mockSessionEndedMetricDispatcher: SessionMetricDispatcher
110
106
111
107
@Mock
112
108
lateinit var mockInitialResourceIdentifier: InitialResourceIdentifier
@@ -127,6 +123,8 @@ internal class RumApplicationScopeAttributePropagationTest {
127
123
@Forgery
128
124
lateinit var fakeDatadogContext: DatadogContext
129
125
126
+ lateinit var fakeGlobalAttributes: Map <String , Any ?>
127
+
130
128
@BoolForgery
131
129
var fakeHasReplay: Boolean = false
132
130
@@ -144,6 +142,8 @@ internal class RumApplicationScopeAttributePropagationTest {
144
142
145
143
@BeforeEach
146
144
fun `set up` (forge : Forge ) {
145
+ fakeGlobalAttributes = forge.exhaustiveAttributes()
146
+
147
147
fakeDatadogContext = fakeDatadogContext.copy(
148
148
source = forge.aValueFrom(ViewEvent .ViewEventSource ::class .java).toJson().asString
149
149
)
@@ -166,11 +166,11 @@ internal class RumApplicationScopeAttributePropagationTest {
166
166
callback.invoke(fakeDatadogContext, mockEventBatchWriter)
167
167
}
168
168
169
- whenever(mockSdkCore.internalLogger) doReturn mock()
169
+ whenever(rumMonitor. mockSdkCore.internalLogger) doReturn mock()
170
170
171
171
testedScope = RumApplicationScope (
172
172
applicationId = fakeApplicationId,
173
- sdkCore = mockSdkCore,
173
+ sdkCore = rumMonitor. mockSdkCore,
174
174
sampleRate = fakeSampleRate,
175
175
backgroundTrackingEnabled = fakeBackgroundTrackingEnabled,
176
176
trackFrustrations = fakeTrackFrustrations,
@@ -190,12 +190,27 @@ internal class RumApplicationScopeAttributePropagationTest {
190
190
191
191
@Test
192
192
fun `M return global attributes W getCustomAttributes()` () {
193
+ // Given
194
+ whenever(rumMonitor.mockInstance.getAttributes()) doReturn fakeGlobalAttributes
195
+
193
196
// When
194
197
val customAttributes = testedScope.getCustomAttributes()
195
198
196
199
// Then
197
- assertThat(customAttributes).isEmpty()
200
+ assertThat(customAttributes)
201
+ .containsExactlyInAnyOrderEntriesOf(fakeGlobalAttributes)
198
202
}
199
203
200
204
// endregion
205
+
206
+ companion object {
207
+
208
+ val rumMonitor = GlobalRumMonitorTestConfiguration ()
209
+
210
+ @TestConfigurationsProvider
211
+ @JvmStatic
212
+ fun getTestConfigurations (): List <TestConfiguration > {
213
+ return listOf (rumMonitor)
214
+ }
215
+ }
201
216
}
0 commit comments