Browse Source

Improve coverage for `TimelinePresenter`

kittykat-patch-1
Benoit Marty 2 years ago
parent
commit
a3348ca71c
  1. 26
      features/messages/src/test/kotlin/io/element/android/features/messages/timeline/TimelinePresenterTest.kt
  2. 5
      libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/timeline/FakeMatrixTimeline.kt

26
features/messages/src/test/kotlin/io/element/android/features/messages/timeline/TimelinePresenterTest.kt

@ -22,6 +22,8 @@ import app.cash.molecule.RecompositionClock @@ -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 { @@ -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 { @@ -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"))
}
}
}

5
libraries/matrixtest/src/main/kotlin/io/element/android/libraries/matrixtest/timeline/FakeMatrixTimeline.kt

@ -30,10 +30,7 @@ const val AN_EVENT_ID_VALUE = "!anEventId" @@ -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

Loading…
Cancel
Save