Let FakeKnockRoom and FakeLogoutUseCase use simulateLongTask
This commit is contained in:
parent
74725bc89f
commit
85b1b9b542
3 changed files with 12 additions and 3 deletions
|
|
@ -9,9 +9,12 @@ package io.element.android.features.joinroom.impl
|
||||||
|
|
||||||
import io.element.android.features.joinroom.impl.di.KnockRoom
|
import io.element.android.features.joinroom.impl.di.KnockRoom
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
import io.element.android.tests.testutils.simulateLongTask
|
||||||
|
|
||||||
class FakeKnockRoom(
|
class FakeKnockRoom(
|
||||||
var lambda: (RoomId) -> Result<Unit> = { Result.success(Unit) }
|
var lambda: (RoomId) -> Result<Unit> = { Result.success(Unit) }
|
||||||
) : KnockRoom {
|
) : KnockRoom {
|
||||||
override suspend fun invoke(roomId: RoomId) = lambda(roomId)
|
override suspend fun invoke(roomId: RoomId) = simulateLongTask {
|
||||||
|
lambda(roomId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,12 @@ package io.element.android.features.logout.test
|
||||||
|
|
||||||
import io.element.android.features.logout.api.LogoutUseCase
|
import io.element.android.features.logout.api.LogoutUseCase
|
||||||
import io.element.android.tests.testutils.lambda.lambdaError
|
import io.element.android.tests.testutils.lambda.lambdaError
|
||||||
|
import io.element.android.tests.testutils.simulateLongTask
|
||||||
|
|
||||||
class FakeLogoutUseCase(
|
class FakeLogoutUseCase(
|
||||||
var logoutLambda: (Boolean) -> String? = { lambdaError() }
|
var logoutLambda: (Boolean) -> String? = { lambdaError() }
|
||||||
) : LogoutUseCase {
|
) : LogoutUseCase {
|
||||||
override suspend fun logout(ignoreSdkError: Boolean): String? {
|
override suspend fun logout(ignoreSdkError: Boolean): String? = simulateLongTask {
|
||||||
return logoutLambda(ignoreSdkError)
|
logoutLambda(ignoreSdkError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.WarmUpRule
|
||||||
import io.element.android.tests.testutils.awaitLastSequentialItem
|
import io.element.android.tests.testutils.awaitLastSequentialItem
|
||||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
|
|
@ -168,11 +169,15 @@ class DeveloperSettingsPresenterTest {
|
||||||
initialState.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true))
|
initialState.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true))
|
||||||
assertThat(awaitItem().isSimpleSlidingSyncEnabled).isTrue()
|
assertThat(awaitItem().isSimpleSlidingSyncEnabled).isTrue()
|
||||||
assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).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()
|
logoutCallRecorder.assertions().isCalledOnce()
|
||||||
|
|
||||||
initialState.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(false))
|
initialState.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(false))
|
||||||
assertThat(awaitItem().isSimpleSlidingSyncEnabled).isFalse()
|
assertThat(awaitItem().isSimpleSlidingSyncEnabled).isFalse()
|
||||||
assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).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)
|
logoutCallRecorder.assertions().isCalledExactly(times = 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue