Skip to content

Commit fee0d71

Browse files
authored
Merge pull request #19 from kkostov/allow-payload-overrides
Environment provider should allow clients to set environment values
2 parents e3341b5 + d67523c commit fee0d71

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

lib/src/main/java/com/telemetrydeck/sdk/EnvironmentMetadataProvider.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ class EnvironmentMetadataProvider : TelemetryProvider {
6767
): Map<String, String> {
6868
val signalPayload = additionalPayload.toMutableMap()
6969
for (item in metadata) {
70-
signalPayload[item.key] = item.value
70+
if (!signalPayload.containsKey(item.key)) {
71+
signalPayload[item.key] = item.value
72+
}
7173
}
7274
return signalPayload
7375
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.telemetrydeck.sdk
2+
3+
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
4+
import org.junit.Assert
5+
import org.junit.Rule
6+
import org.junit.Test
7+
import java.util.UUID
8+
9+
class EnvironmentMetadataProviderTest {
10+
@get:Rule
11+
val instantTaskExecutorRule = InstantTaskExecutorRule()
12+
13+
@Test
14+
fun environmentMetadataProvider_sets_client_version() {
15+
val appID = "32CB6574-6732-4238-879F-582FEBEB6536"
16+
val config = TelemetryManagerConfiguration(appID)
17+
val manager = TelemetryManager.Builder().configuration(config).build(null)
18+
19+
manager.queue("type", "clientUser", emptyMap())
20+
21+
val queuedSignal = manager.cache?.empty()?.first()
22+
23+
Assert.assertNotNull(queuedSignal)
24+
Assert.assertEquals(queuedSignal?.payload?.contains("telemetryClientVersion:com.telemetrydeck.sdk"), true)
25+
}
26+
27+
@Test
28+
fun environmentMetadataProvider_allows_properties_to_be_set_in_advance() {
29+
val appID = "32CB6574-6732-4238-879F-582FEBEB6536"
30+
val config = TelemetryManagerConfiguration(appID)
31+
val manager = TelemetryManager.Builder().configuration(config).build(null)
32+
33+
manager.queue("type", "clientUser", mapOf("telemetryClientVersion" to "my value"))
34+
35+
val queuedSignal = manager.cache?.empty()?.first()
36+
37+
Assert.assertNotNull(queuedSignal)
38+
Assert.assertEquals(queuedSignal?.payload?.contains("telemetryClientVersion:my value"), true)
39+
}
40+
}

0 commit comments

Comments
 (0)