From 2516d0cae7e8889714121055ecb0ca9577fddfad Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 6 Feb 2023 17:52:29 +0100 Subject: [PATCH] Add test about visible range --- .../roomlist/RoomListPresenterTests.kt | 37 +++++++++++++++++++ .../room/InMemoryRoomSummaryDataSource.kt | 6 ++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt b/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt index 19b9a2755a..7af95b0196 100644 --- a/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt +++ b/features/roomlist/src/test/kotlin/io/element/android/features/roomlist/RoomListPresenterTests.kt @@ -133,6 +133,43 @@ class RoomListPresenterTests { assertThat(withFilteredRoomState.roomList.size).isEqualTo(0) } } + + @Test + fun `present - update visible range`() = runTest { + val roomSummaryDataSource = InMemoryRoomSummaryDataSource() + val presenter = RoomListPresenter( + FakeMatrixClient( + sessionId = SessionId("sessionId"), + roomSummaryDataSource = roomSummaryDataSource + ), + LastMessageFormatter() + ) + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + roomSummaryDataSource.postRoomSummary(listOf(aRoomSummaryFilled())) + skipItems(3) + val loadedState = awaitItem() + // check initial value + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isNull() + // Test empty range + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(1, 0))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isNull() + // Update visible range and check that range is transmitted to the SDK after computation + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(0, 0))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isEqualTo(IntRange(0, 20)) + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(0, 1))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isEqualTo(IntRange(0, 21)) + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(19, 29))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isEqualTo(IntRange(0, 49)) + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(49, 59))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isEqualTo(IntRange(29, 79)) + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(149, 159))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isEqualTo(IntRange(129, 179)) + loadedState.eventSink.invoke(RoomListEvents.UpdateVisibleRange(IntRange(149, 259))) + assertThat(roomSummaryDataSource.latestSlidingSyncRange).isEqualTo(IntRange(129, 279)) + } + } } private val aRoomListRoomSummary = RoomListRoomSummary( diff --git a/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/room/InMemoryRoomSummaryDataSource.kt b/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/room/InMemoryRoomSummaryDataSource.kt index 666f64acb4..17d7d108a2 100644 --- a/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/room/InMemoryRoomSummaryDataSource.kt +++ b/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/room/InMemoryRoomSummaryDataSource.kt @@ -33,5 +33,9 @@ class InMemoryRoomSummaryDataSource : RoomSummaryDataSource { return roomSummariesFlow } - override fun setSlidingSyncRange(range: IntRange) = Unit + var latestSlidingSyncRange: IntRange? = null + + override fun setSlidingSyncRange(range: IntRange) { + latestSlidingSyncRange = range + } }