From cc41cf64326d613aff96138c90eb6de2c49b7575 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 16:52:12 +0100 Subject: [PATCH] Update test. --- .../impl/VerifySelfSessionPresenterTests.kt | 36 ++++++++++++------- .../FakeSessionVerificationService.kt | 17 +++------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt index 3bf074b602..c96866cb5a 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt @@ -23,11 +23,11 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.verifysession.impl.VerifySelfSessionState.VerificationStep import io.element.android.libraries.architecture.Async +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.VerificationEmoji import io.element.android.libraries.matrix.api.verification.VerificationFlowState import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService import io.element.android.tests.testutils.WarmUpRule -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -74,7 +74,7 @@ class VerifySelfSessionPresenterTests { // Await for other device response: assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.AwaitingOtherDeviceResponse) // ChallengeReceived: - service.triggerReceiveVerificationData() + service.triggerReceiveVerificationData(SessionVerificationData.Emojis(emptyList())) val verifyingState = awaitItem() assertThat(verifyingState.verificationFlowStep).isInstanceOf(VerificationStep.Verifying::class.java) } @@ -133,7 +133,7 @@ class VerifySelfSessionPresenterTests { presenter.present() }.test { requestVerificationAndAwaitVerifyingState(service) - service.givenVerificationFlowState(VerificationFlowState.ReceivedVerificationData(persistentListOf())) + service.givenVerificationFlowState(VerificationFlowState.ReceivedVerificationData(SessionVerificationData.Emojis(emptyList()))) ensureAllEventsConsumed() } } @@ -158,18 +158,24 @@ class VerifySelfSessionPresenterTests { @Test fun `present - When verification is approved, the flow completes if there is no error`() = runTest { val emojis = listOf( - VerificationEmoji(30, "Smiley") + VerificationEmoji(number = 30, emoji = "😀", description = "Smiley") ) - val service = FakeSessionVerificationService().apply { - givenEmojiList(emojis) - } + val service = FakeSessionVerificationService() val presenter = createVerifySelfSessionPresenter(service) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - val state = requestVerificationAndAwaitVerifyingState(service) + val state = requestVerificationAndAwaitVerifyingState( + service, + SessionVerificationData.Emojis(emojis) + ) state.eventSink(VerifySelfSessionViewEvents.ConfirmVerification) - assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Verifying(emojis, Async.Loading())) + assertThat(awaitItem().verificationFlowStep).isEqualTo( + VerificationStep.Verifying( + SessionVerificationData.Emojis(emojis), + Async.Loading(), + ) + ) assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Completed) } } @@ -183,13 +189,19 @@ class VerifySelfSessionPresenterTests { }.test { val state = requestVerificationAndAwaitVerifyingState(service) state.eventSink(VerifySelfSessionViewEvents.DeclineVerification) - assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Verifying(emptyList(), Async.Loading())) + assertThat(awaitItem().verificationFlowStep).isEqualTo( + VerificationStep.Verifying( + SessionVerificationData.Emojis(emptyList()), + Async.Loading(), + ) + ) assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Canceled) } } private suspend fun ReceiveTurbine.requestVerificationAndAwaitVerifyingState( - fakeService: FakeSessionVerificationService + fakeService: FakeSessionVerificationService, + sessionVerificationData: SessionVerificationData = SessionVerificationData.Emojis(emptyList()), ): VerifySelfSessionState { var state = awaitItem() assertThat(state.verificationFlowStep).isEqualTo(VerificationStep.Initial) @@ -204,7 +216,7 @@ class VerifySelfSessionPresenterTests { // Await for other device response (again): state = awaitItem() assertThat(state.verificationFlowStep).isEqualTo(VerificationStep.AwaitingOtherDeviceResponse) - fakeService.triggerReceiveVerificationData() + fakeService.triggerReceiveVerificationData(sessionVerificationData) // Finally, ChallengeReceived: state = awaitItem() assertThat(state.verificationFlowStep).isInstanceOf(VerificationStep.Verifying::class.java) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt index 34405f1e3d..4a7aa1c304 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt @@ -16,12 +16,10 @@ package io.element.android.libraries.matrix.test.verification +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.SessionVerificationService -import io.element.android.libraries.matrix.api.verification.VerificationFlowState import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus -import io.element.android.libraries.matrix.api.verification.VerificationEmoji -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toPersistentList +import io.element.android.libraries.matrix.api.verification.VerificationFlowState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -31,10 +29,9 @@ class FakeSessionVerificationService : SessionVerificationService { private val _sessionVerifiedStatus = MutableStateFlow(SessionVerifiedStatus.Unknown) private var _verificationFlowState = MutableStateFlow(VerificationFlowState.Initial) private var _canVerifySessionFlow = MutableStateFlow(true) - private var emojiList = persistentListOf() var shouldFail = false - override val verificationFlowState: StateFlow =_verificationFlowState + override val verificationFlowState: StateFlow = _verificationFlowState override val sessionVerifiedStatus: StateFlow = _sessionVerifiedStatus override val canVerifySessionFlow: Flow = _canVerifySessionFlow @@ -64,8 +61,8 @@ class FakeSessionVerificationService : SessionVerificationService { } } - fun triggerReceiveVerificationData() { - _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(emojiList) + fun triggerReceiveVerificationData(sessionVerificationData: SessionVerificationData) { + _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(sessionVerificationData) } override suspend fun startVerification() { @@ -88,10 +85,6 @@ class FakeSessionVerificationService : SessionVerificationService { _isReady.value = value } - fun givenEmojiList(emojis: List) { - this.emojiList = emojis.toPersistentList() - } - override suspend fun reset() { _verificationFlowState.value = VerificationFlowState.Initial }