Stronger lambda error (#4771)
* Make sure lambdaError() make the test fail in all circumstances. * Fix existing errors on tests. * Uniformize the way we are creating class under test. * Cleanup * Fix typo * Fix failing test after rebase.
This commit is contained in:
parent
5b9da3c41b
commit
4572419ed2
19 changed files with 289 additions and 279 deletions
|
|
@ -15,7 +15,6 @@ import io.element.android.libraries.matrix.test.A_DEVICE_ID
|
|||
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
||||
import io.element.android.libraries.matrix.test.room.aRoomInfo
|
||||
import io.element.android.tests.testutils.testCoroutineDispatchers
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.test.TestScope
|
||||
import kotlinx.coroutines.test.runTest
|
||||
|
|
@ -24,18 +23,13 @@ import org.junit.Test
|
|||
class RustBaseRoomTest {
|
||||
@Test
|
||||
fun `RustBaseRoom should cancel the room coroutine scope when it is destroyed`() = runTest {
|
||||
val rustBaseRoom = createRustBaseRoom(
|
||||
// Not using backgroundScope here, but the test scope
|
||||
sessionCoroutineScope = this
|
||||
)
|
||||
val rustBaseRoom = createRustBaseRoom()
|
||||
assertThat(rustBaseRoom.roomCoroutineScope.isActive).isTrue()
|
||||
rustBaseRoom.destroy()
|
||||
assertThat(rustBaseRoom.roomCoroutineScope.isActive).isFalse()
|
||||
}
|
||||
|
||||
private fun TestScope.createRustBaseRoom(
|
||||
sessionCoroutineScope: CoroutineScope,
|
||||
): RustBaseRoom {
|
||||
private fun TestScope.createRustBaseRoom(): RustBaseRoom {
|
||||
val dispatchers = testCoroutineDispatchers()
|
||||
return RustBaseRoom(
|
||||
sessionId = A_SESSION_ID,
|
||||
|
|
@ -47,7 +41,8 @@ class RustBaseRoomTest {
|
|||
dispatchers = dispatchers,
|
||||
),
|
||||
roomMembershipObserver = RoomMembershipObserver(),
|
||||
sessionCoroutineScope = sessionCoroutineScope,
|
||||
// Not using backgroundScope here, but the test scope
|
||||
sessionCoroutineScope = this,
|
||||
roomInfoMapper = RoomInfoMapper(),
|
||||
initialRoomInfo = aRoomInfo(),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ import io.element.android.libraries.matrix.api.roomdirectory.RoomDirectoryList
|
|||
import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomDescription
|
||||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomDirectorySearch
|
||||
import io.element.android.libraries.matrix.test.A_ROOM_ID_2
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.test.StandardTestDispatcher
|
||||
import kotlinx.coroutines.test.TestScope
|
||||
|
|
@ -31,7 +30,6 @@ class RustBaseRoomDirectoryListTest {
|
|||
val mapper = RoomDescriptionMapper()
|
||||
val sut = createRustRoomDirectoryList(
|
||||
roomDirectorySearch = roomDirectorySearch,
|
||||
scope = backgroundScope,
|
||||
)
|
||||
// Let the mxCallback be ready
|
||||
runCurrent()
|
||||
|
|
@ -81,10 +79,9 @@ class RustBaseRoomDirectoryListTest {
|
|||
|
||||
private fun TestScope.createRustRoomDirectoryList(
|
||||
roomDirectorySearch: RoomDirectorySearch = FakeRustRoomDirectorySearch(),
|
||||
scope: CoroutineScope,
|
||||
) = RustRoomDirectoryList(
|
||||
inner = roomDirectorySearch,
|
||||
coroutineScope = scope,
|
||||
coroutineScope = backgroundScope,
|
||||
coroutineContext = StandardTestDispatcher(testScheduler),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ import io.element.android.libraries.matrix.api.roomlist.RoomListService
|
|||
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustRoomListService
|
||||
import io.element.android.libraries.matrix.impl.room.RoomSyncSubscriber
|
||||
import io.element.android.tests.testutils.testCoroutineDispatchers
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.test.StandardTestDispatcher
|
||||
import kotlinx.coroutines.test.TestScope
|
||||
|
|
@ -28,7 +27,6 @@ class RustBaseRoomListServiceTest {
|
|||
fun `syncIndicator should emit the expected values`() = runTest {
|
||||
val roomListService = FakeRustRoomListService()
|
||||
val sut = createRustRoomListService(
|
||||
sessionCoroutineScope = backgroundScope,
|
||||
roomListService = roomListService,
|
||||
)
|
||||
// Give time for mxCallback to setup
|
||||
|
|
@ -44,18 +42,17 @@ class RustBaseRoomListServiceTest {
|
|||
}
|
||||
|
||||
private fun TestScope.createRustRoomListService(
|
||||
sessionCoroutineScope: CoroutineScope,
|
||||
roomListService: RustRoomListService = FakeRustRoomListService(),
|
||||
) = RustRoomListService(
|
||||
innerRoomListService = roomListService,
|
||||
sessionDispatcher = StandardTestDispatcher(testScheduler),
|
||||
roomListFactory = RoomListFactory(
|
||||
innerRoomListService = roomListService,
|
||||
sessionCoroutineScope = sessionCoroutineScope,
|
||||
sessionCoroutineScope = backgroundScope,
|
||||
),
|
||||
roomSyncSubscriber = RoomSyncSubscriber(
|
||||
roomListService = roomListService,
|
||||
dispatchers = testCoroutineDispatchers(),
|
||||
),
|
||||
sessionCoroutineScope = sessionCoroutineScope,
|
||||
sessionCoroutineScope = backgroundScope,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeRustTimelineI
|
|||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
|
@ -38,7 +37,6 @@ class TimelineItemsSubscriberTest {
|
|||
MutableSharedFlow(replay = 1, extraBufferCapacity = Int.MAX_VALUE)
|
||||
val timeline = FakeRustTimeline()
|
||||
val timelineItemsSubscriber = createTimelineItemsSubscriber(
|
||||
coroutineScope = backgroundScope,
|
||||
timeline = timeline,
|
||||
timelineItems = timelineItems,
|
||||
)
|
||||
|
|
@ -59,7 +57,6 @@ class TimelineItemsSubscriberTest {
|
|||
MutableSharedFlow(replay = 1, extraBufferCapacity = Int.MAX_VALUE)
|
||||
val timeline = FakeRustTimeline()
|
||||
val timelineItemsSubscriber = createTimelineItemsSubscriber(
|
||||
coroutineScope = backgroundScope,
|
||||
timeline = timeline,
|
||||
timelineItems = timelineItems,
|
||||
)
|
||||
|
|
@ -81,7 +78,6 @@ class TimelineItemsSubscriberTest {
|
|||
val timeline = FakeRustTimeline()
|
||||
val onNewSyncedEventRecorder = lambdaRecorder<Unit> { }
|
||||
val timelineItemsSubscriber = createTimelineItemsSubscriber(
|
||||
coroutineScope = backgroundScope,
|
||||
timeline = timeline,
|
||||
timelineItems = timelineItems,
|
||||
onNewSyncedEvent = onNewSyncedEventRecorder,
|
||||
|
|
@ -109,9 +105,7 @@ class TimelineItemsSubscriberTest {
|
|||
|
||||
@Test
|
||||
fun `multiple subscriptions does not have side effect`() = runTest {
|
||||
val timelineItemsSubscriber = createTimelineItemsSubscriber(
|
||||
coroutineScope = backgroundScope,
|
||||
)
|
||||
val timelineItemsSubscriber = createTimelineItemsSubscriber()
|
||||
timelineItemsSubscriber.subscribeIfNeeded()
|
||||
timelineItemsSubscriber.subscribeIfNeeded()
|
||||
timelineItemsSubscriber.unsubscribeIfNeeded()
|
||||
|
|
@ -120,7 +114,6 @@ class TimelineItemsSubscriberTest {
|
|||
}
|
||||
|
||||
private fun TestScope.createTimelineItemsSubscriber(
|
||||
coroutineScope: CoroutineScope,
|
||||
timeline: Timeline = FakeRustTimeline(),
|
||||
timelineItems: MutableSharedFlow<List<MatrixTimelineItem>> = MutableSharedFlow(replay = 1, extraBufferCapacity = Int.MAX_VALUE),
|
||||
initLatch: CompletableDeferred<Unit> = CompletableDeferred(),
|
||||
|
|
@ -128,7 +121,7 @@ private fun TestScope.createTimelineItemsSubscriber(
|
|||
onNewSyncedEvent: () -> Unit = { lambdaError() },
|
||||
): TimelineItemsSubscriber {
|
||||
return TimelineItemsSubscriber(
|
||||
timelineCoroutineScope = coroutineScope,
|
||||
timelineCoroutineScope = backgroundScope,
|
||||
dispatcher = StandardTestDispatcher(testScheduler),
|
||||
timeline = timeline,
|
||||
timelineDiffProcessor = createMatrixTimelineDiffProcessor(timelineItems),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue