Skip to content

Commit d100b62

Browse files
committed
Fix posthog tests
1 parent 69bb98f commit d100b62

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

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

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616

1717
package im.vector.app.features.analytics.impl
1818

19-
import com.posthog.android.Properties
20-
import im.vector.app.features.analytics.itf.VectorAnalyticsEvent
21-
import im.vector.app.features.analytics.itf.VectorAnalyticsScreen
2219
import im.vector.app.test.fakes.FakeAnalyticsStore
2320
import im.vector.app.test.fakes.FakeLateInitUserPropertiesFactory
2421
import im.vector.app.test.fakes.FakePostHog
@@ -128,7 +125,7 @@ class DefaultVectorAnalyticsTest {
128125

129126
defaultVectorAnalytics.screen(A_SCREEN_EVENT)
130127

131-
fakePostHog.verifyScreenTracked(A_SCREEN_EVENT.getName(), A_SCREEN_EVENT.toPostHogProperties())
128+
fakePostHog.verifyScreenTracked(A_SCREEN_EVENT.getName(), A_SCREEN_EVENT.getProperties())
132129
}
133130

134131
@Test
@@ -146,7 +143,7 @@ class DefaultVectorAnalyticsTest {
146143

147144
defaultVectorAnalytics.capture(AN_EVENT)
148145

149-
fakePostHog.verifyEventTracked(AN_EVENT.getName(), AN_EVENT.toPostHogProperties())
146+
fakePostHog.verifyEventTracked(AN_EVENT.getName(), AN_EVENT.getProperties().clearNulls())
150147
}
151148

152149
@Test
@@ -176,16 +173,16 @@ class DefaultVectorAnalyticsTest {
176173

177174
fakeSentryAnalytics.verifyNoErrorTracking()
178175
}
179-
}
180176

181-
private fun VectorAnalyticsScreen.toPostHogProperties(): Properties? {
182-
return getProperties()?.let { properties ->
183-
Properties().also { it.putAll(properties) }
184-
}
185-
}
177+
private fun Map<String, Any?>?.clearNulls(): Map<String, Any>? {
178+
if (this == null) return null
186179

187-
private fun VectorAnalyticsEvent.toPostHogProperties(): Properties? {
188-
return getProperties()?.let { properties ->
189-
Properties().also { it.putAll(properties) }
180+
val nonNulls = HashMap<String, Any>()
181+
this.forEach { (key, value) ->
182+
if (value != null) {
183+
nonNulls[key] = value
184+
}
185+
}
186+
return nonNulls
190187
}
191188
}

vector/src/test/java/im/vector/app/test/fakes/FakePostHog.kt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package im.vector.app.test.fakes
1818

1919
import android.os.Looper
20-
import com.posthog.android.PostHog
21-
import com.posthog.android.Properties
20+
import com.posthog.PostHogInterface
2221
import im.vector.app.features.analytics.plan.UserProperties
2322
import io.mockk.every
2423
import io.mockk.mockk
@@ -36,16 +35,19 @@ class FakePostHog {
3635
every { Looper.getMainLooper() } returns looper
3736
}
3837

39-
val instance = mockk<PostHog>(relaxed = true)
38+
val instance = mockk<PostHogInterface>(relaxed = true)
4039

4140
fun verifyOptOutStatus(optedOut: Boolean) {
42-
verify { instance.optOut(optedOut) }
41+
if (optedOut) {
42+
verify { instance.optOut() }
43+
} else {
44+
verify { instance.optIn() }
45+
}
4346
}
4447

4548
fun verifyIdentifies(analyticsId: String, userProperties: UserProperties?) {
4649
verify {
4750
val postHogProperties = userProperties?.getProperties()
48-
?.let { rawProperties -> Properties().also { it.putAll(rawProperties) } }
4951
?.takeIf { it.isNotEmpty() }
5052
instance.identify(analyticsId, postHogProperties, null)
5153
}
@@ -55,20 +57,19 @@ class FakePostHog {
5557
verify { instance.reset() }
5658
}
5759

58-
fun verifyScreenTracked(name: String, properties: Properties?) {
60+
fun verifyScreenTracked(name: String, properties: Map<String, Any>?) {
5961
verify { instance.screen(name, properties) }
6062
}
6163

6264
fun verifyNoScreenTracking() {
6365
verify(exactly = 0) {
6466
instance.screen(any())
6567
instance.screen(any(), any())
66-
instance.screen(any(), any(), any())
6768
}
6869
}
6970

70-
fun verifyEventTracked(name: String, properties: Properties?) {
71-
verify { instance.capture(name, properties) }
71+
fun verifyEventTracked(name: String, properties: Map<String, Any>?) {
72+
verify { instance.capture(name, null, properties) }
7273
}
7374

7475
fun verifyNoEventTracking() {

0 commit comments

Comments
 (0)