Timeline: fix tests
This commit is contained in:
parent
96ac1763a1
commit
d47d0deb17
2 changed files with 32 additions and 9 deletions
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.features.messages.impl.timeline.groups
|
package io.element.android.features.messages.impl.timeline.groups
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.libraries.di.RoomScope
|
import io.element.android.libraries.di.RoomScope
|
||||||
import io.element.android.libraries.di.SingleIn
|
import io.element.android.libraries.di.SingleIn
|
||||||
|
|
@ -86,8 +87,11 @@ private fun MutableMap<String, String>.getOrPutGroupId(timelineItems: List<Timel
|
||||||
return this[itemIdentifier]!!
|
return this[itemIdentifier]!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val itemIdentifier = timelineItems.first().identifier()
|
val timelineItem = timelineItems.first()
|
||||||
return "${itemIdentifier}_group".also { groupId ->
|
return computeGroupIdWith(timelineItem).also { groupId ->
|
||||||
this[itemIdentifier] = groupId
|
this[timelineItem.identifier()] = groupId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
internal fun computeGroupIdWith(timelineItem: TimelineItem): String = "${timelineItem.identifier()}_group"
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,13 @@ import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.messages.fixtures.aMessageEvent
|
import io.element.android.features.messages.fixtures.aMessageEvent
|
||||||
import io.element.android.features.messages.impl.timeline.aTimelineItemReactions
|
import io.element.android.features.messages.impl.timeline.aTimelineItemReactions
|
||||||
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.groups.computeGroupIdWith
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemStateEventContent
|
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemStateEventContent
|
||||||
import io.element.android.features.messages.impl.timeline.model.virtual.aTimelineItemDaySeparatorModel
|
import io.element.android.features.messages.impl.timeline.model.virtual.aTimelineItemDaySeparatorModel
|
||||||
import io.element.android.libraries.designsystem.components.avatar.anAvatarData
|
import io.element.android.libraries.designsystem.components.avatar.anAvatarData
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
|
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
|
||||||
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.AN_EVENT_ID_2
|
|
||||||
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.room.aTimelineItemDebugInfo
|
import io.element.android.libraries.matrix.test.room.aTimelineItemDebugInfo
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
@ -36,7 +36,7 @@ class TimelineItemGrouperTest {
|
||||||
private val sut = TimelineItemGrouper()
|
private val sut = TimelineItemGrouper()
|
||||||
|
|
||||||
private val aGroupableItem = TimelineItem.Event(
|
private val aGroupableItem = TimelineItem.Event(
|
||||||
id = AN_EVENT_ID.value,
|
id = "0",
|
||||||
senderId = A_USER_ID,
|
senderId = A_USER_ID,
|
||||||
senderAvatar = anAvatarData(),
|
senderAvatar = anAvatarData(),
|
||||||
senderDisplayName = "",
|
senderDisplayName = "",
|
||||||
|
|
@ -76,16 +76,17 @@ class TimelineItemGrouperTest {
|
||||||
fun `test groupables and ensure reordering`() {
|
fun `test groupables and ensure reordering`() {
|
||||||
val result = sut.group(
|
val result = sut.group(
|
||||||
listOf(
|
listOf(
|
||||||
aGroupableItem.copy(id = AN_EVENT_ID_2.value),
|
aGroupableItem.copy(id = "1"),
|
||||||
aGroupableItem,
|
aGroupableItem.copy(id = "0"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
assertThat(result).isEqualTo(
|
assertThat(result).isEqualTo(
|
||||||
listOf(
|
listOf(
|
||||||
TimelineItem.GroupedEvents(
|
TimelineItem.GroupedEvents(
|
||||||
|
computeGroupIdWith(aGroupableItem),
|
||||||
events = listOf(
|
events = listOf(
|
||||||
aGroupableItem,
|
aGroupableItem.copy("0"),
|
||||||
aGroupableItem.copy(id = AN_EVENT_ID_2.value),
|
aGroupableItem.copy(id = "1"),
|
||||||
).toImmutableList()
|
).toImmutableList()
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -128,6 +129,7 @@ class TimelineItemGrouperTest {
|
||||||
assertThat(result).isEqualTo(
|
assertThat(result).isEqualTo(
|
||||||
listOf(
|
listOf(
|
||||||
TimelineItem.GroupedEvents(
|
TimelineItem.GroupedEvents(
|
||||||
|
computeGroupIdWith(aGroupableItem),
|
||||||
events = listOf(
|
events = listOf(
|
||||||
aGroupableItem,
|
aGroupableItem,
|
||||||
aGroupableItem,
|
aGroupableItem,
|
||||||
|
|
@ -135,6 +137,7 @@ class TimelineItemGrouperTest {
|
||||||
),
|
),
|
||||||
aNonGroupableItem,
|
aNonGroupableItem,
|
||||||
TimelineItem.GroupedEvents(
|
TimelineItem.GroupedEvents(
|
||||||
|
computeGroupIdWith(aGroupableItem),
|
||||||
events = listOf(
|
events = listOf(
|
||||||
aGroupableItem,
|
aGroupableItem,
|
||||||
aGroupableItem,
|
aGroupableItem,
|
||||||
|
|
@ -144,4 +147,20 @@ class TimelineItemGrouperTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when calling multiple time the method group over a growing list of groupable items, then groupId is stable`() {
|
||||||
|
// When
|
||||||
|
val groupableItems = mutableListOf(
|
||||||
|
aGroupableItem.copy(id = "1"),
|
||||||
|
aGroupableItem.copy(id = "2")
|
||||||
|
)
|
||||||
|
val expectedGroupId = sut.group(groupableItems).first().identifier()
|
||||||
|
groupableItems.add(0, aGroupableItem.copy("3"))
|
||||||
|
groupableItems.add(2, aGroupableItem.copy("4"))
|
||||||
|
groupableItems.add(aGroupableItem.copy("5"))
|
||||||
|
val actualGroupId = sut.group(groupableItems).first().identifier()
|
||||||
|
// Then
|
||||||
|
assertThat(actualGroupId).isEqualTo(expectedGroupId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue