Add unit test on LastForwardIndicatorsPostProcessor
This commit is contained in:
parent
51fe1edd8d
commit
10547b8291
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
|
package io.element.android.libraries.matrix.impl.timeline.postprocessor
|
||||||
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
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.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
|
||||||
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
|
import org.junit.Test
|
||||||
|
|
||||||
class RoomBeginningPostProcessorTest {
|
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
|
@Test
|
||||||
fun `processor returns empty list when empty list is provided`() {
|
fun `processor returns empty list when empty list is provided`() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue