Use LaunchedEffect and improve test
This commit is contained in:
parent
ca9937674c
commit
036c73c31b
2 changed files with 18 additions and 13 deletions
|
|
@ -71,7 +71,9 @@ class LoggedInPresenter @Inject constructor(
|
||||||
}
|
}
|
||||||
val verificationState by sessionVerificationService.sessionVerifiedStatus.collectAsState()
|
val verificationState by sessionVerificationService.sessionVerifiedStatus.collectAsState()
|
||||||
val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState()
|
val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState()
|
||||||
reportCryptoStatusToAnalytics(verificationState, recoveryState)
|
LaunchedEffect(verificationState, recoveryState) {
|
||||||
|
reportCryptoStatusToAnalytics(verificationState, recoveryState)
|
||||||
|
}
|
||||||
|
|
||||||
return LoggedInState(
|
return LoggedInState(
|
||||||
showSyncSpinner = showSyncSpinner,
|
showSyncSpinner = showSyncSpinner,
|
||||||
|
|
|
||||||
|
|
@ -73,10 +73,11 @@ class LoggedInPresenterTest {
|
||||||
@Test
|
@Test
|
||||||
fun `present - report crypto status analytics`() = runTest {
|
fun `present - report crypto status analytics`() = runTest {
|
||||||
val analyticsService = FakeAnalyticsService()
|
val analyticsService = FakeAnalyticsService()
|
||||||
|
val roomListService = FakeRoomListService()
|
||||||
val verificationService = FakeSessionVerificationService()
|
val verificationService = FakeSessionVerificationService()
|
||||||
val encryptionService = FakeEncryptionService()
|
val encryptionService = FakeEncryptionService()
|
||||||
val presenter = LoggedInPresenter(
|
val presenter = LoggedInPresenter(
|
||||||
matrixClient = FakeMatrixClient(encryptionService = encryptionService),
|
matrixClient = FakeMatrixClient(roomListService = roomListService, encryptionService = encryptionService),
|
||||||
networkMonitor = FakeNetworkMonitor(NetworkStatus.Online),
|
networkMonitor = FakeNetworkMonitor(NetworkStatus.Online),
|
||||||
pushService = FakePushService(),
|
pushService = FakePushService(),
|
||||||
sessionVerificationService = verificationService,
|
sessionVerificationService = verificationService,
|
||||||
|
|
@ -90,17 +91,19 @@ class LoggedInPresenterTest {
|
||||||
encryptionService.emitRecoveryState(RecoveryState.INCOMPLETE)
|
encryptionService.emitRecoveryState(RecoveryState.INCOMPLETE)
|
||||||
verificationService.emitVerifiedStatus(SessionVerifiedStatus.Verified)
|
verificationService.emitVerifiedStatus(SessionVerifiedStatus.Verified)
|
||||||
|
|
||||||
// Should only capture once (not report while checking state -like unknown-)
|
skipItems(4)
|
||||||
consumeItemsUntilPredicate {
|
|
||||||
analyticsService.capturedEvents.size == 1 &&
|
assertThat(analyticsService.capturedEvents.size).isEqualTo(1)
|
||||||
analyticsService.capturedEvents[0] is CryptoSessionStateChange
|
assertThat(analyticsService.capturedEvents[0]).isInstanceOf(CryptoSessionStateChange::class.java)
|
||||||
}
|
|
||||||
consumeItemsUntilPredicate {
|
assertThat(analyticsService.capturedUserProperties.size).isEqualTo(1)
|
||||||
analyticsService.capturedUserProperties.size == 1 &&
|
assertThat(analyticsService.capturedUserProperties[0].recoveryState).isEqualTo(UserProperties.RecoveryState.Incomplete)
|
||||||
analyticsService.capturedUserProperties[0].recoveryState == UserProperties.RecoveryState.Incomplete &&
|
assertThat(analyticsService.capturedUserProperties[0].verificationState).isEqualTo(UserProperties.VerificationState.Verified)
|
||||||
analyticsService.capturedUserProperties[0].verificationState == UserProperties.VerificationState.Verified
|
|
||||||
}
|
// ensure a sync status change does not trigger a new capture
|
||||||
cancelAndConsumeRemainingEvents()
|
roomListService.postSyncIndicator(RoomListService.SyncIndicator.Show)
|
||||||
|
skipItems(1)
|
||||||
|
assertThat(analyticsService.capturedEvents.size).isEqualTo(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue