Merge pull request #2120 from element-hq/feature/bma/testSecureBackupEnablePresenter

Add missing test for SecureBackupEnablePresenter
This commit is contained in:
Jorge Martin Espinosa
2023-12-28 17:05:03 +01:00
committed by GitHub
2 changed files with 28 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.matrix.api.encryption.EncryptionService
import io.element.android.libraries.matrix.test.AN_EXCEPTION
import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService
import io.element.android.tests.testutils.WarmUpRule
import kotlinx.coroutines.test.runTest
@@ -58,6 +59,26 @@ class SecureBackupEnablePresenterTest {
}
}
@Test
fun `present - user enable backup with error`() = runTest {
val encryptionService = FakeEncryptionService()
encryptionService.givenEnableBackupsFailure(AN_EXCEPTION)
val presenter = createPresenter(encryptionService = encryptionService)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
val initialState = awaitItem()
initialState.eventSink(SecureBackupEnableEvents.EnableBackup)
val loadingState = awaitItem()
assertThat(loadingState.enableAction).isInstanceOf(Async.Loading::class.java)
val errorState = awaitItem()
assertThat(errorState.enableAction).isEqualTo(Async.Failure<Unit>(AN_EXCEPTION))
errorState.eventSink(SecureBackupEnableEvents.DismissDialog)
val finalState = awaitItem()
assertThat(finalState.enableAction).isEqualTo(Async.Uninitialized)
}
}
private fun createPresenter(
encryptionService: EncryptionService = FakeEncryptionService(),
) = SecureBackupEnablePresenter(

View File

@@ -36,7 +36,14 @@ class FakeEncryptionService : EncryptionService {
private var recoverFailure: Exception? = null
private var doesBackupExistOnServerResult: Result<Boolean> = Result.success(true)
private var enableBackupsFailure: Exception? = null
fun givenEnableBackupsFailure(exception: Exception?) {
enableBackupsFailure = exception
}
override suspend fun enableBackups(): Result<Unit> = simulateLongTask {
enableBackupsFailure?.let { return Result.failure(it) }
return Result.success(Unit)
}