From 269551366c52c41fc31a50acf8aa6710fcd84bed Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 14 Oct 2024 11:52:57 +0200 Subject: [PATCH] Let FakeKnockRoom and FakeLogoutUseCase use simulateLongTask --- .../element/android/features/joinroom/impl/FakeKnockRoom.kt | 5 ++++- .../android/features/logout/test/FakeLogoutUseCase.kt | 5 +++-- .../impl/developer/DeveloperSettingsPresenterTest.kt | 5 +++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeKnockRoom.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeKnockRoom.kt index ae60b6c9bb..e60707d165 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeKnockRoom.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/FakeKnockRoom.kt @@ -9,9 +9,12 @@ package io.element.android.features.joinroom.impl import io.element.android.features.joinroom.impl.di.KnockRoom import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.tests.testutils.simulateLongTask class FakeKnockRoom( var lambda: (RoomId) -> Result = { Result.success(Unit) } ) : KnockRoom { - override suspend fun invoke(roomId: RoomId) = lambda(roomId) + override suspend fun invoke(roomId: RoomId) = simulateLongTask { + lambda(roomId) + } } diff --git a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt index 11fb968a1f..4f3475f21c 100644 --- a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt +++ b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutUseCase.kt @@ -9,11 +9,12 @@ package io.element.android.features.logout.test import io.element.android.features.logout.api.LogoutUseCase import io.element.android.tests.testutils.lambda.lambdaError +import io.element.android.tests.testutils.simulateLongTask class FakeLogoutUseCase( var logoutLambda: (Boolean) -> String? = { lambdaError() } ) : LogoutUseCase { - override suspend fun logout(ignoreSdkError: Boolean): String? { - return logoutLambda(ignoreSdkError) + override suspend fun logout(ignoreSdkError: Boolean): String? = simulateLongTask { + logoutLambda(ignoreSdkError) } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt index c893de7f55..51750d4bfb 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt @@ -26,6 +26,7 @@ import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.awaitLastSequentialItem import io.element.android.tests.testutils.lambda.lambdaRecorder +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -168,11 +169,15 @@ class DeveloperSettingsPresenterTest { initialState.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true)) assertThat(awaitItem().isSimpleSlidingSyncEnabled).isTrue() assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() + // Give time for the logout to be called, but for some reason using runCurrent() is not enough + delay(2) logoutCallRecorder.assertions().isCalledOnce() initialState.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(false)) assertThat(awaitItem().isSimpleSlidingSyncEnabled).isFalse() assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() + // Give time for the logout to be called, but for some reason using runCurrent() is not enough + delay(2) logoutCallRecorder.assertions().isCalledExactly(times = 2) } }