Improve coverage for TimelinePresenter

This commit is contained in:
Benoit Marty
2023-02-09 09:52:03 +01:00
parent 4b7f64dcff
commit 8bcc2209a3
2 changed files with 26 additions and 5 deletions

View File

@@ -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"))
}
}
}

View File

@@ -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