Enforce usage of TestScope.testScheduler

This commit is contained in:
Benoit Marty 2023-06-12 19:49:56 +02:00
parent 0d55c47d4f
commit 91d20e1b78
6 changed files with 14 additions and 14 deletions

View file

@ -213,5 +213,5 @@ private fun TestScope.createPresenter(
): LeaveRoomPresenter = LeaveRoomPresenterImpl( ): LeaveRoomPresenter = LeaveRoomPresenterImpl(
client = client, client = client,
roomMembershipObserver = roomMembershipObserver, roomMembershipObserver = roomMembershipObserver,
dispatchers = testCoroutineDispatchers(testScheduler, false), dispatchers = testCoroutineDispatchers(false),
) )

View file

@ -63,7 +63,7 @@ class SearchAccountProviderPresenterTest {
AccountProviderDataSource() AccountProviderDataSource()
) )
val presenter = SearchAccountProviderPresenter( val presenter = SearchAccountProviderPresenter(
HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest),
changeServerPresenter changeServerPresenter
) )
moleculeFlow(RecompositionClock.Immediate) { moleculeFlow(RecompositionClock.Immediate) {
@ -87,7 +87,7 @@ class SearchAccountProviderPresenterTest {
AccountProviderDataSource() AccountProviderDataSource()
) )
val presenter = SearchAccountProviderPresenter( val presenter = SearchAccountProviderPresenter(
HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest),
changeServerPresenter changeServerPresenter
) )
moleculeFlow(RecompositionClock.Immediate) { moleculeFlow(RecompositionClock.Immediate) {
@ -122,7 +122,7 @@ class SearchAccountProviderPresenterTest {
AccountProviderDataSource() AccountProviderDataSource()
) )
val presenter = SearchAccountProviderPresenter( val presenter = SearchAccountProviderPresenter(
HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest),
changeServerPresenter changeServerPresenter
) )
moleculeFlow(RecompositionClock.Immediate) { moleculeFlow(RecompositionClock.Immediate) {
@ -157,7 +157,7 @@ class SearchAccountProviderPresenterTest {
AccountProviderDataSource() AccountProviderDataSource()
) )
val presenter = SearchAccountProviderPresenter( val presenter = SearchAccountProviderPresenter(
HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest),
changeServerPresenter changeServerPresenter
) )
moleculeFlow(RecompositionClock.Immediate) { moleculeFlow(RecompositionClock.Immediate) {

View file

@ -36,8 +36,9 @@ import io.element.android.libraries.dateformatter.test.FakeDaySeparatorFormatter
import io.element.android.libraries.eventformatter.api.TimelineEventFormatter import io.element.android.libraries.eventformatter.api.TimelineEventFormatter
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
import io.element.android.tests.testutils.testCoroutineDispatchers import io.element.android.tests.testutils.testCoroutineDispatchers
import kotlinx.coroutines.test.TestScope
internal fun aTimelineItemsFactory(): TimelineItemsFactory { internal fun TestScope.aTimelineItemsFactory(): TimelineItemsFactory {
val timelineEventFormatter = aTimelineEventFormatter() val timelineEventFormatter = aTimelineEventFormatter()
return TimelineItemsFactory( return TimelineItemsFactory(
dispatchers = testCoroutineDispatchers(), dispatchers = testCoroutineDispatchers(),

View file

@ -38,6 +38,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult
import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.libraries.usersearch.test.FakeUserRepository
import io.element.android.tests.testutils.testCoroutineDispatchers import io.element.android.tests.testutils.testCoroutineDispatchers
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Test import org.junit.Test
@ -368,7 +369,7 @@ internal class RoomInviteMembersPresenterTest {
} }
} }
private fun createDataSource( private fun TestScope.createDataSource(
matrixRoom: MatrixRoom = aMatrixRoom().apply { matrixRoom: MatrixRoom = aMatrixRoom().apply {
givenRoomMembersState(MatrixRoomMembersState.Ready(aRoomMemberList())) givenRoomMembersState(MatrixRoomMembersState.Ready(aRoomMemberList()))
}, },

View file

@ -35,6 +35,7 @@ import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
import io.element.android.tests.testutils.testCoroutineDispatchers import io.element.android.tests.testutils.testCoroutineDispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Test import org.junit.Test
@ -165,7 +166,7 @@ class RoomMemberListPresenterTests {
} }
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
private fun createDataSource( private fun TestScope.createDataSource(
matrixRoom: MatrixRoom = aMatrixRoom().apply { matrixRoom: MatrixRoom = aMatrixRoom().apply {
givenRoomMembersState(MatrixRoomMembersState.Ready(aRoomMemberList())) givenRoomMembersState(MatrixRoomMembersState.Ready(aRoomMemberList()))
}, },
@ -173,7 +174,7 @@ private fun createDataSource(
) = RoomMemberListDataSource(matrixRoom, coroutineDispatchers) ) = RoomMemberListDataSource(matrixRoom, coroutineDispatchers)
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
private fun createPresenter( private fun TestScope.createPresenter(
matrixRoom: MatrixRoom = FakeMatrixRoom(), matrixRoom: MatrixRoom = FakeMatrixRoom(),
roomMemberListDataSource: RoomMemberListDataSource = createDataSource(), roomMemberListDataSource: RoomMemberListDataSource = createDataSource(),
coroutineDispatchers: CoroutineDispatchers = testCoroutineDispatchers() coroutineDispatchers: CoroutineDispatchers = testCoroutineDispatchers()

View file

@ -21,19 +21,16 @@ package io.element.android.tests.testutils
import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestCoroutineScheduler import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.UnconfinedTestDispatcher
/** /**
* Create a [CoroutineDispatchers] instance for testing. * Create a [CoroutineDispatchers] instance for testing.
* *
* @param testScheduler The [TestCoroutineScheduler] to use. If using [runTest] use the one provided by its [TestScope].
* If null the [TestDispatcher] logic will select one or create a new one.
* @param useUnconfinedTestDispatcher If true, use [UnconfinedTestDispatcher] for all dispatchers. * @param useUnconfinedTestDispatcher If true, use [UnconfinedTestDispatcher] for all dispatchers.
* If false, use [StandardTestDispatcher] for all dispatchers. * If false, use [StandardTestDispatcher] for all dispatchers.
*/ */
fun testCoroutineDispatchers( fun TestScope.testCoroutineDispatchers(
testScheduler: TestCoroutineScheduler? = null,
useUnconfinedTestDispatcher: Boolean = true, useUnconfinedTestDispatcher: Boolean = true,
): CoroutineDispatchers = when (useUnconfinedTestDispatcher) { ): CoroutineDispatchers = when (useUnconfinedTestDispatcher) {
false -> CoroutineDispatchers( false -> CoroutineDispatchers(