feat: add groupEventsByDate helper for schedule date headers

This commit is contained in:
2026-08-06 17:03:24 +02:00
parent b7af237002
commit cf24f9c0e3
2 changed files with 52 additions and 1 deletions
@@ -52,3 +52,9 @@ fun List<Event>.distinctAgegroups(): List<String> =
fun List<Event>.distinctSubgroups(): List<String> = fun List<Event>.distinctSubgroups(): List<String> =
map { extractSubgroup(it.name) }.toSet().sorted() map { extractSubgroup(it.name) }.toSet().sorted()
fun groupEventsByDate(events: List<Event>): List<Pair<String, List<Event>>> =
events
.sortedBy { it.start }
.groupBy { it.start.take(10) }
.toList()
@@ -20,6 +20,7 @@ package ch.parano.myicek.filter
import ch.parano.myicek.models.Event import ch.parano.myicek.models.Event
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertTrue
class EventFilterTest { class EventFilterTest {
@@ -28,6 +29,7 @@ class EventFilterTest {
agegroup: String = "U13 (Elite)", agegroup: String = "U13 (Elite)",
name: String = "U13 Elite - HC Ajoie", name: String = "U13 Elite - HC Ajoie",
eventType: String = "Jeu", eventType: String = "Jeu",
start: String = "2024-11-10T14:00:00",
) = Event( ) = Event(
idEvent = id, idEvent = id,
agegroup = agegroup, agegroup = agegroup,
@@ -35,7 +37,7 @@ class EventFilterTest {
title = "Title", title = "Title",
opponent = "Opp", opponent = "Opp",
place = "Place", place = "Place",
start = "2024-11-10T14:00:00", start = start,
end = "2024-11-10T16:15:00", end = "2024-11-10T16:15:00",
color = "#e4222e", color = "#e4222e",
eventType = eventType, eventType = eventType,
@@ -171,4 +173,47 @@ class EventFilterTest {
assertEquals("U13 Elite", result[0]) assertEquals("U13 Elite", result[0])
assertEquals("U13 Top", result[1]) assertEquals("U13 Top", result[1])
} }
@Test
fun testGroupEventsByDateSingleDay() {
val events = listOf(
event(id = "1", start = "2024-11-10T14:00:00"),
event(id = "2", start = "2024-11-10T16:00:00"),
)
val grouped = groupEventsByDate(events)
assertEquals(1, grouped.size)
assertEquals("2024-11-10", grouped[0].first)
assertEquals(2, grouped[0].second.size)
}
@Test
fun testGroupEventsByDateMultipleDays() {
val events = listOf(
event(id = "1", start = "2024-11-11T10:00:00"),
event(id = "2", start = "2024-11-10T14:00:00"),
event(id = "3", start = "2024-11-10T16:00:00"),
)
val grouped = groupEventsByDate(events)
assertEquals(2, grouped.size)
assertEquals("2024-11-10", grouped[0].first)
assertEquals(2, grouped[0].second.size)
assertEquals("2024-11-11", grouped[1].first)
assertEquals(1, grouped[1].second.size)
}
@Test
fun testGroupEventsByDateWithSpaceSeparator() {
val events = listOf(
event(id = "1", start = "2024-11-10 14:00:00"),
)
val grouped = groupEventsByDate(events)
assertEquals(1, grouped.size)
assertEquals("2024-11-10", grouped[0].first)
}
@Test
fun testGroupEventsByDateEmpty() {
val grouped = groupEventsByDate(emptyList())
assertTrue(grouped.isEmpty())
}
} }