Improve coverage for TimelinePresenter
This commit is contained in:
parent
4b7f64dcff
commit
8bcc2209a3
2 changed files with 26 additions and 5 deletions
|
|
@ -22,6 +22,8 @@ import app.cash.molecule.RecompositionClock
|
||||||
import app.cash.molecule.moleculeFlow
|
import app.cash.molecule.moleculeFlow
|
||||||
import app.cash.turbine.test
|
import app.cash.turbine.test
|
||||||
import com.google.common.truth.Truth.assertThat
|
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.FakeMatrixClient
|
||||||
import io.element.android.libraries.matrixtest.core.A_ROOM_ID
|
import io.element.android.libraries.matrixtest.core.A_ROOM_ID
|
||||||
import io.element.android.libraries.matrixtest.room.FakeMatrixRoom
|
import io.element.android.libraries.matrixtest.room.FakeMatrixRoom
|
||||||
|
|
@ -43,7 +45,7 @@ class TimelinePresenterTest {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.timelineItems.size).isEqualTo(0)
|
assertThat(initialState.timelineItems).isEmpty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,4 +92,26 @@ class TimelinePresenterTest {
|
||||||
assertThat(withoutHighlightedState.highlightedEventId).isNull()
|
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)
|
val AN_EVENT_ID = EventId(AN_EVENT_ID_VALUE)
|
||||||
|
|
||||||
class FakeMatrixTimeline : MatrixTimeline {
|
class FakeMatrixTimeline : MatrixTimeline {
|
||||||
|
override var callback: MatrixTimeline.Callback? = null
|
||||||
override var callback: MatrixTimeline.Callback?
|
|
||||||
get() = null
|
|
||||||
set(value) {}
|
|
||||||
|
|
||||||
private var hasMoreToLoadValue: Boolean = true
|
private var hasMoreToLoadValue: Boolean = true
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue