mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 20:38:40 +00:00
Add test for TimelinePresenter: Collapse and expand group.
This commit is contained in:
+37
@@ -24,8 +24,12 @@ import io.element.android.features.messages.fixtures.aTimelineItemsFactory
|
|||||||
import io.element.android.features.messages.impl.timeline.TimelineEvents
|
import io.element.android.features.messages.impl.timeline.TimelineEvents
|
||||||
import io.element.android.features.messages.impl.timeline.TimelinePresenter
|
import io.element.android.features.messages.impl.timeline.TimelinePresenter
|
||||||
import io.element.android.features.messages.impl.timeline.groups.TimelineItemGrouper
|
import io.element.android.features.messages.impl.timeline.groups.TimelineItemGrouper
|
||||||
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
|
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||||
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
||||||
|
import io.element.android.libraries.matrix.test.room.anEventTimelineItem
|
||||||
|
import io.element.android.libraries.matrix.test.timeline.FakeMatrixTimeline
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@@ -91,4 +95,37 @@ class TimelinePresenterTest {
|
|||||||
assertThat(withoutHighlightedState.highlightedEventId).isNull()
|
assertThat(withoutHighlightedState.highlightedEventId).isNull()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `present - expand and collapse grouped events`() = runTest {
|
||||||
|
val fakeTimeline = FakeMatrixTimeline(
|
||||||
|
initialTimelineItems = listOf(
|
||||||
|
MatrixTimelineItem.Event(anEventTimelineItem() /* This is a groupable event */),
|
||||||
|
MatrixTimelineItem.Event(anEventTimelineItem() /* This is a groupable event */),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val fakeRoom = FakeMatrixRoom(matrixTimeline = fakeTimeline)
|
||||||
|
val presenter = TimelinePresenter(
|
||||||
|
timelineItemsFactory = aTimelineItemsFactory(),
|
||||||
|
timelineItemGrouper = TimelineItemGrouper(),
|
||||||
|
room = fakeRoom,
|
||||||
|
)
|
||||||
|
moleculeFlow(RecompositionClock.Immediate) {
|
||||||
|
presenter.present()
|
||||||
|
}.test {
|
||||||
|
skipItems(1)
|
||||||
|
fakeTimeline.updateTimelineItems { it }
|
||||||
|
val loadedState = awaitItem()
|
||||||
|
val group1 = loadedState.timelineItems.first() as TimelineItem.GroupedEvents
|
||||||
|
assertThat(group1.expanded).isFalse()
|
||||||
|
loadedState.eventSink.invoke(TimelineEvents.ToggleExpandGroup(group1))
|
||||||
|
val withExpandedGroup = awaitItem()
|
||||||
|
val group2 = withExpandedGroup.timelineItems.first() as TimelineItem.GroupedEvents
|
||||||
|
assertThat(group2.expanded).isTrue()
|
||||||
|
withExpandedGroup.eventSink.invoke(TimelineEvents.ToggleExpandGroup(group2))
|
||||||
|
val withCollapsedGroup = awaitItem()
|
||||||
|
val group3 = withCollapsedGroup.timelineItems.first() as TimelineItem.GroupedEvents
|
||||||
|
assertThat(group3.expanded).isFalse()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user