Add unit test on LastForwardIndicatorsPostProcessor
This commit is contained in:
parent
26260aed9f
commit
2ee71b5dee
3 changed files with 140 additions and 25 deletions
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright 2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.impl.timeline.postprocessor
|
||||
|
||||
import io.element.android.libraries.matrix.api.core.UniqueId
|
||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MembershipChange
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherState
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.RoomMembershipContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.StateContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem
|
||||
import io.element.android.libraries.matrix.test.A_USER_ID
|
||||
import io.element.android.libraries.matrix.test.A_USER_ID_2
|
||||
import io.element.android.libraries.matrix.test.timeline.aMessageContent
|
||||
import io.element.android.libraries.matrix.test.timeline.anEventTimelineItem
|
||||
|
||||
internal val roomCreateEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.create"),
|
||||
event = anEventTimelineItem(sender = A_USER_ID, content = StateContent("", OtherState.RoomCreate))
|
||||
)
|
||||
internal val roomCreatorJoinEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.member"),
|
||||
event = anEventTimelineItem(content = RoomMembershipContent(A_USER_ID, null, MembershipChange.JOINED))
|
||||
)
|
||||
internal val otherMemberJoinEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.member_other"),
|
||||
event = anEventTimelineItem(content = RoomMembershipContent(A_USER_ID_2, null, MembershipChange.JOINED))
|
||||
)
|
||||
internal val messageEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.message"),
|
||||
event = anEventTimelineItem(content = aMessageContent("hi"))
|
||||
)
|
||||
internal val messageEvent2 = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.message2"),
|
||||
event = anEventTimelineItem(content = aMessageContent("hello"))
|
||||
)
|
||||
internal val dayEvent = MatrixTimelineItem.Virtual(
|
||||
uniqueId = UniqueId("day"),
|
||||
virtual = VirtualTimelineItem.DayDivider(0),
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*
|
||||
* Copyright 2024 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* Please see LICENSE in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.impl.timeline.postprocessor
|
||||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import io.element.android.libraries.matrix.api.core.UniqueId
|
||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||
import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem
|
||||
import org.junit.Test
|
||||
|
||||
class LastForwardIndicatorsPostProcessorTest {
|
||||
@Test
|
||||
fun `LastForwardIndicatorsPostProcessor does not alter the items with mode not FOCUSED_ON_EVENT`() {
|
||||
val sut = LastForwardIndicatorsPostProcessor(Timeline.Mode.LIVE)
|
||||
val result = sut.process(listOf(messageEvent), true)
|
||||
assertThat(result).containsExactly(messageEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `LastForwardIndicatorsPostProcessor does not alter the items with mode FOCUSED_ON_EVENT but timeline not initialized`() {
|
||||
val sut = LastForwardIndicatorsPostProcessor(Timeline.Mode.FOCUSED_ON_EVENT)
|
||||
val result = sut.process(listOf(messageEvent), false)
|
||||
assertThat(result).containsExactly(messageEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `LastForwardIndicatorsPostProcessor add virtual items`() {
|
||||
val sut = LastForwardIndicatorsPostProcessor(Timeline.Mode.FOCUSED_ON_EVENT)
|
||||
val result = sut.process(listOf(messageEvent), true)
|
||||
assertThat(result).containsExactly(
|
||||
messageEvent,
|
||||
MatrixTimelineItem.Virtual(
|
||||
uniqueId = UniqueId("last_forward_indicator_${messageEvent.uniqueId}"),
|
||||
virtual = VirtualTimelineItem.LastForwardIndicator
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `LastForwardIndicatorsPostProcessor add virtual items on empty list`() {
|
||||
val sut = LastForwardIndicatorsPostProcessor(Timeline.Mode.FOCUSED_ON_EVENT)
|
||||
val result = sut.process(listOf(), true)
|
||||
assertThat(result).containsExactly(
|
||||
MatrixTimelineItem.Virtual(
|
||||
uniqueId = UniqueId("last_forward_indicator_fake_id"),
|
||||
virtual = VirtualTimelineItem.LastForwardIndicator
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `LastForwardIndicatorsPostProcessor add virtual items but does not alter the list if called a second time`() {
|
||||
val sut = LastForwardIndicatorsPostProcessor(Timeline.Mode.FOCUSED_ON_EVENT)
|
||||
// Process a first time
|
||||
sut.process(listOf(messageEvent), true)
|
||||
// Process a second time with the same Event
|
||||
val result = sut.process(listOf(messageEvent), true)
|
||||
assertThat(result).containsExactly(
|
||||
messageEvent,
|
||||
MatrixTimelineItem.Virtual(
|
||||
uniqueId = UniqueId("last_forward_indicator_${messageEvent.uniqueId}"),
|
||||
virtual = VirtualTimelineItem.LastForwardIndicator
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `LastForwardIndicatorsPostProcessor add virtual items each time it is called with new Events`() {
|
||||
val sut = LastForwardIndicatorsPostProcessor(Timeline.Mode.FOCUSED_ON_EVENT)
|
||||
// Process a first time
|
||||
sut.process(listOf(dayEvent, messageEvent), true)
|
||||
// Process a second time with the same Event
|
||||
val result = sut.process(listOf(dayEvent, messageEvent, messageEvent2), true)
|
||||
assertThat(result).containsExactly(
|
||||
dayEvent,
|
||||
messageEvent,
|
||||
MatrixTimelineItem.Virtual(
|
||||
uniqueId = UniqueId("last_forward_indicator_${messageEvent.uniqueId}"),
|
||||
virtual = VirtualTimelineItem.LastForwardIndicator
|
||||
),
|
||||
messageEvent2,
|
||||
MatrixTimelineItem.Virtual(
|
||||
uniqueId = UniqueId("last_forward_indicator_${messageEvent2.uniqueId}"),
|
||||
virtual = VirtualTimelineItem.LastForwardIndicator
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -8,36 +8,11 @@
|
|||
package io.element.android.libraries.matrix.impl.timeline.postprocessor
|
||||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import io.element.android.libraries.matrix.api.core.UniqueId
|
||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MembershipChange
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherState
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.RoomMembershipContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.StateContent
|
||||
import io.element.android.libraries.matrix.test.A_USER_ID
|
||||
import io.element.android.libraries.matrix.test.A_USER_ID_2
|
||||
import io.element.android.libraries.matrix.test.timeline.aMessageContent
|
||||
import io.element.android.libraries.matrix.test.timeline.anEventTimelineItem
|
||||
import org.junit.Test
|
||||
|
||||
class RoomBeginningPostProcessorTest {
|
||||
private val roomCreateEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.create"),
|
||||
event = anEventTimelineItem(sender = A_USER_ID, content = StateContent("", OtherState.RoomCreate))
|
||||
)
|
||||
private val roomCreatorJoinEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.member"),
|
||||
event = anEventTimelineItem(content = RoomMembershipContent(A_USER_ID, null, MembershipChange.JOINED))
|
||||
)
|
||||
private val otherMemberJoinEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.member_other"),
|
||||
event = anEventTimelineItem(content = RoomMembershipContent(A_USER_ID_2, null, MembershipChange.JOINED))
|
||||
)
|
||||
private val messageEvent = MatrixTimelineItem.Event(
|
||||
uniqueId = UniqueId("m.room.message"),
|
||||
event = anEventTimelineItem(content = aMessageContent("hi"))
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `processor returns empty list when empty list is provided`() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue