@@ -18,6 +18,7 @@ package im.vector.app.features.analytics.impl
18
18
19
19
import im.vector.app.features.analytics.plan.SuperProperties
20
20
import im.vector.app.test.fakes.FakeAnalyticsStore
21
+ import im.vector.app.test.fakes.FakeAutoSuperPropertiesFlowProvider
21
22
import im.vector.app.test.fakes.FakeLateInitUserPropertiesFactory
22
23
import im.vector.app.test.fakes.FakePostHog
23
24
import im.vector.app.test.fakes.FakePostHogFactory
@@ -26,12 +27,9 @@ import im.vector.app.test.fixtures.AnalyticsConfigFixture.anAnalyticsConfig
26
27
import im.vector.app.test.fixtures.aUserProperties
27
28
import im.vector.app.test.fixtures.aVectorAnalyticsEvent
28
29
import im.vector.app.test.fixtures.aVectorAnalyticsScreen
29
- import io.mockk.every
30
- import io.mockk.mockk
31
30
import kotlinx.coroutines.CoroutineScope
32
31
import kotlinx.coroutines.Dispatchers
33
32
import kotlinx.coroutines.ExperimentalCoroutinesApi
34
- import kotlinx.coroutines.flow.flowOf
35
33
import kotlinx.coroutines.test.runTest
36
34
import org.junit.Before
37
35
import org.junit.Test
@@ -48,9 +46,7 @@ class DefaultVectorAnalyticsTest {
48
46
private val fakeAnalyticsStore = FakeAnalyticsStore ()
49
47
private val fakeLateInitUserPropertiesFactory = FakeLateInitUserPropertiesFactory ()
50
48
private val fakeSentryAnalytics = FakeSentryAnalytics ()
51
- private val mockAutoSuperPropertiesFlowProvider = mockk<AutoSuperPropertiesFlowProvider >().also {
52
- every { it.superPropertiesFlow } returns flowOf(SuperProperties ())
53
- }
49
+ private val fakeAutoSuperPropertiesFlowProvider = FakeAutoSuperPropertiesFlowProvider ()
54
50
55
51
private val defaultVectorAnalytics = DefaultVectorAnalytics (
56
52
postHogFactory = FakePostHogFactory (fakePostHog.instance).instance,
@@ -59,7 +55,7 @@ class DefaultVectorAnalyticsTest {
59
55
globalScope = CoroutineScope (Dispatchers .Unconfined ),
60
56
analyticsConfig = anAnalyticsConfig(isEnabled = true ),
61
57
lateInitUserPropertiesFactory = fakeLateInitUserPropertiesFactory.instance,
62
- autoSuperPropertiesFlowProvider = mockAutoSuperPropertiesFlowProvider ,
58
+ autoSuperPropertiesFlowProvider = fakeAutoSuperPropertiesFlowProvider.instance ,
63
59
)
64
60
65
61
@Before
@@ -293,6 +289,40 @@ class DefaultVectorAnalyticsTest {
293
289
)
294
290
}
295
291
292
+ @Test
293
+ fun `Update super properties from flow` () = runTest {
294
+ fakeAnalyticsStore.givenUserContent(consent = true )
295
+
296
+ fakeAutoSuperPropertiesFlowProvider.postSuperProperty(
297
+ SuperProperties (
298
+ cryptoSDKVersion = " 0"
299
+ )
300
+ )
301
+
302
+ val fakeEvent = aVectorAnalyticsEvent(" THE_NAME" , null )
303
+ defaultVectorAnalytics.capture(fakeEvent)
304
+
305
+ fakePostHog.verifyEventTracked(
306
+ " THE_NAME" ,
307
+ mapOf (
308
+ " cryptoSDKVersion" to " 0"
309
+ )
310
+ )
311
+
312
+ fakeAutoSuperPropertiesFlowProvider.postSuperProperty(SuperProperties (
313
+ cryptoSDKVersion = " 1"
314
+ ))
315
+
316
+ defaultVectorAnalytics.capture(fakeEvent)
317
+
318
+ fakePostHog.verifyEventTracked(
319
+ " THE_NAME" ,
320
+ mapOf (
321
+ " cryptoSDKVersion" to " 1"
322
+ )
323
+ )
324
+ }
325
+
296
326
private fun Map <String , Any ?>?.clearNulls (): Map <String , Any >? {
297
327
if (this == null ) return null
298
328
0 commit comments