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