Skip to content

Commit 28fa4ab

Browse files
committed
improve tests
1 parent a363e39 commit 28fa4ab

File tree

2 files changed

+73
-7
lines changed

2 files changed

+73
-7
lines changed

vector/src/test/java/im/vector/app/features/analytics/impl/DefaultVectorAnalyticsTest.kt

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package im.vector.app.features.analytics.impl
1818

1919
import im.vector.app.features.analytics.plan.SuperProperties
2020
import im.vector.app.test.fakes.FakeAnalyticsStore
21+
import im.vector.app.test.fakes.FakeAutoSuperPropertiesFlowProvider
2122
import im.vector.app.test.fakes.FakeLateInitUserPropertiesFactory
2223
import im.vector.app.test.fakes.FakePostHog
2324
import im.vector.app.test.fakes.FakePostHogFactory
@@ -26,12 +27,9 @@ import im.vector.app.test.fixtures.AnalyticsConfigFixture.anAnalyticsConfig
2627
import im.vector.app.test.fixtures.aUserProperties
2728
import im.vector.app.test.fixtures.aVectorAnalyticsEvent
2829
import im.vector.app.test.fixtures.aVectorAnalyticsScreen
29-
import io.mockk.every
30-
import io.mockk.mockk
3130
import kotlinx.coroutines.CoroutineScope
3231
import kotlinx.coroutines.Dispatchers
3332
import kotlinx.coroutines.ExperimentalCoroutinesApi
34-
import kotlinx.coroutines.flow.flowOf
3533
import kotlinx.coroutines.test.runTest
3634
import org.junit.Before
3735
import org.junit.Test
@@ -48,9 +46,7 @@ class DefaultVectorAnalyticsTest {
4846
private val fakeAnalyticsStore = FakeAnalyticsStore()
4947
private val fakeLateInitUserPropertiesFactory = FakeLateInitUserPropertiesFactory()
5048
private val fakeSentryAnalytics = FakeSentryAnalytics()
51-
private val mockAutoSuperPropertiesFlowProvider = mockk<AutoSuperPropertiesFlowProvider>().also {
52-
every { it.superPropertiesFlow } returns flowOf(SuperProperties())
53-
}
49+
private val fakeAutoSuperPropertiesFlowProvider = FakeAutoSuperPropertiesFlowProvider()
5450

5551
private val defaultVectorAnalytics = DefaultVectorAnalytics(
5652
postHogFactory = FakePostHogFactory(fakePostHog.instance).instance,
@@ -59,7 +55,7 @@ class DefaultVectorAnalyticsTest {
5955
globalScope = CoroutineScope(Dispatchers.Unconfined),
6056
analyticsConfig = anAnalyticsConfig(isEnabled = true),
6157
lateInitUserPropertiesFactory = fakeLateInitUserPropertiesFactory.instance,
62-
autoSuperPropertiesFlowProvider = mockAutoSuperPropertiesFlowProvider,
58+
autoSuperPropertiesFlowProvider = fakeAutoSuperPropertiesFlowProvider.instance,
6359
)
6460

6561
@Before
@@ -293,6 +289,40 @@ class DefaultVectorAnalyticsTest {
293289
)
294290
}
295291

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+
296326
private fun Map<String, Any?>?.clearNulls(): Map<String, Any>? {
297327
if (this == null) return null
298328

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright (c) 2024 New Vector Ltd
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package im.vector.app.test.fakes
18+
19+
import im.vector.app.features.analytics.impl.AutoSuperPropertiesFlowProvider
20+
import im.vector.app.features.analytics.plan.SuperProperties
21+
import io.mockk.every
22+
import io.mockk.mockk
23+
import kotlinx.coroutines.flow.MutableSharedFlow
24+
25+
class FakeAutoSuperPropertiesFlowProvider {
26+
27+
val flow = MutableSharedFlow<SuperProperties>()
28+
29+
val instance = mockk<AutoSuperPropertiesFlowProvider>().also {
30+
every { it.superPropertiesFlow } returns flow
31+
}
32+
33+
suspend fun postSuperProperty(properties: SuperProperties) {
34+
flow.emit(properties)
35+
}
36+
}

0 commit comments

Comments
 (0)