Improve coverage for TimelinePresenter
This commit is contained in:
@@ -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"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user