From 8bcc2209a3b900b8b752037eefe7d74fb550b087 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Feb 2023 09:52:03 +0100 Subject: [PATCH] Improve coverage for `TimelinePresenter` --- .../timeline/TimelinePresenterTest.kt | 26 ++++++++++++++++++- .../matrixtest/timeline/FakeMatrixTimeline.kt | 5 +--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/features/messages/src/test/kotlin/io/element/android/features/messages/timeline/TimelinePresenterTest.kt b/features/messages/src/test/kotlin/io/element/android/features/messages/timeline/TimelinePresenterTest.kt index a1106f738e..1234c8619c 100644 --- a/features/messages/src/test/kotlin/io/element/android/features/messages/timeline/TimelinePresenterTest.kt +++ b/features/messages/src/test/kotlin/io/element/android/features/messages/timeline/TimelinePresenterTest.kt @@ -22,6 +22,8 @@ import app.cash.molecule.RecompositionClock import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.features.messages.timeline.model.TimelineItem +import io.element.android.libraries.matrix.timeline.MatrixTimelineItem import io.element.android.libraries.matrixtest.FakeMatrixClient import io.element.android.libraries.matrixtest.core.A_ROOM_ID import io.element.android.libraries.matrixtest.room.FakeMatrixRoom @@ -43,7 +45,7 @@ class TimelinePresenterTest { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.timelineItems.size).isEqualTo(0) + assertThat(initialState.timelineItems).isEmpty() } } @@ -90,4 +92,26 @@ class TimelinePresenterTest { assertThat(withoutHighlightedState.highlightedEventId).isNull() } } + + @Test + fun `present - test callback`() = runTest { + val matrixTimeline = FakeMatrixTimeline() + val matrixRoom = FakeMatrixRoom(A_ROOM_ID, matrixTimeline = matrixTimeline) + val presenter = TimelinePresenter( + testCoroutineDispatchers(), + FakeMatrixClient(), + matrixRoom + ) + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + assertThat(initialState.timelineItems).isEmpty() + // Simulate callback from the SDK + matrixTimeline.callback?.onPushedTimelineItem(MatrixTimelineItem.Virtual) + val nonEmptyState = awaitItem() + assertThat(nonEmptyState.timelineItems).isNotEmpty() + assertThat(nonEmptyState.timelineItems[0]).isEqualTo(TimelineItem.Virtual("virtual_item_0")) + } + } } diff --git a/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/timeline/FakeMatrixTimeline.kt b/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/timeline/FakeMatrixTimeline.kt index 4a24e168dc..417489dc83 100644 --- a/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/timeline/FakeMatrixTimeline.kt +++ b/libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/timeline/FakeMatrixTimeline.kt @@ -30,10 +30,7 @@ const val AN_EVENT_ID_VALUE = "!anEventId" val AN_EVENT_ID = EventId(AN_EVENT_ID_VALUE) class FakeMatrixTimeline : MatrixTimeline { - - override var callback: MatrixTimeline.Callback? - get() = null - set(value) {} + override var callback: MatrixTimeline.Callback? = null private var hasMoreToLoadValue: Boolean = true