From 9e73e70a229e253250d91b9518dca714b8218c40 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 12 Jun 2023 19:49:56 +0200 Subject: [PATCH] Enforce usage of `TestScope.testScheduler` --- .../features/leaveroom/impl/LeaveRoomPresenterImplTest.kt | 2 +- .../SearchAccountProviderPresenterTest.kt | 8 ++++---- .../features/messages/fixtures/timelineItemsFactory.kt | 3 ++- .../impl/invite/RoomInviteMembersPresenterTest.kt | 3 ++- .../roomdetails/members/RoomMemberListPresenterTests.kt | 5 +++-- .../android/tests/testutils/TestCoroutineDispatchers.kt | 7 ++----- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt index 54ab3d1dc5..03eeb3adc6 100644 --- a/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt +++ b/features/leaveroom/impl/src/test/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImplTest.kt @@ -213,5 +213,5 @@ private fun TestScope.createPresenter( ): LeaveRoomPresenter = LeaveRoomPresenterImpl( client = client, roomMembershipObserver = roomMembershipObserver, - dispatchers = testCoroutineDispatchers(testScheduler, false), + dispatchers = testCoroutineDispatchers(false), ) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index c1d36c2e2f..9163f247f5 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -63,7 +63,7 @@ class SearchAccountProviderPresenterTest { AccountProviderDataSource() ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), + HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), changeServerPresenter ) moleculeFlow(RecompositionClock.Immediate) { @@ -87,7 +87,7 @@ class SearchAccountProviderPresenterTest { AccountProviderDataSource() ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), + HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), changeServerPresenter ) moleculeFlow(RecompositionClock.Immediate) { @@ -122,7 +122,7 @@ class SearchAccountProviderPresenterTest { AccountProviderDataSource() ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), + HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), changeServerPresenter ) moleculeFlow(RecompositionClock.Immediate) { @@ -157,7 +157,7 @@ class SearchAccountProviderPresenterTest { AccountProviderDataSource() ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(testScheduler), fakeWellknownRequest), + HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), changeServerPresenter ) moleculeFlow(RecompositionClock.Immediate) { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt index c6ea04f407..ba1e7a8869 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/fixtures/timelineItemsFactory.kt @@ -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.matrix.api.timeline.item.event.EventTimelineItem import io.element.android.tests.testutils.testCoroutineDispatchers +import kotlinx.coroutines.test.TestScope -internal fun aTimelineItemsFactory(): TimelineItemsFactory { +internal fun TestScope.aTimelineItemsFactory(): TimelineItemsFactory { val timelineEventFormatter = aTimelineEventFormatter() return TimelineItemsFactory( dispatchers = testCoroutineDispatchers(), diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt index 3baea96990..495e639baf 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersPresenterTest.kt @@ -38,6 +38,7 @@ import io.element.android.libraries.usersearch.api.UserSearchResult import io.element.android.libraries.usersearch.test.FakeUserRepository import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test @@ -368,7 +369,7 @@ internal class RoomInviteMembersPresenterTest { } } - private fun createDataSource( + private fun TestScope.createDataSource( matrixRoom: MatrixRoom = aMatrixRoom().apply { givenRoomMembersState(MatrixRoomMembersState.Ready(aRoomMemberList())) }, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt index 9625a167f7..b9b52b29f8 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/members/RoomMemberListPresenterTests.kt @@ -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.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test @@ -165,7 +166,7 @@ class RoomMemberListPresenterTests { } @ExperimentalCoroutinesApi -private fun createDataSource( +private fun TestScope.createDataSource( matrixRoom: MatrixRoom = aMatrixRoom().apply { givenRoomMembersState(MatrixRoomMembersState.Ready(aRoomMemberList())) }, @@ -173,7 +174,7 @@ private fun createDataSource( ) = RoomMemberListDataSource(matrixRoom, coroutineDispatchers) @ExperimentalCoroutinesApi -private fun createPresenter( +private fun TestScope.createPresenter( matrixRoom: MatrixRoom = FakeMatrixRoom(), roomMemberListDataSource: RoomMemberListDataSource = createDataSource(), coroutineDispatchers: CoroutineDispatchers = testCoroutineDispatchers() diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestCoroutineDispatchers.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestCoroutineDispatchers.kt index 4628f4910c..786d8f8cd2 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestCoroutineDispatchers.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/TestCoroutineDispatchers.kt @@ -21,19 +21,16 @@ package io.element.android.tests.testutils import io.element.android.libraries.core.coroutine.CoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.StandardTestDispatcher -import kotlinx.coroutines.test.TestCoroutineScheduler +import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher /** * 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. * If false, use [StandardTestDispatcher] for all dispatchers. */ -fun testCoroutineDispatchers( - testScheduler: TestCoroutineScheduler? = null, +fun TestScope.testCoroutineDispatchers( useUnconfinedTestDispatcher: Boolean = true, ): CoroutineDispatchers = when (useUnconfinedTestDispatcher) { false -> CoroutineDispatchers(