feat: add groupEventsByDate helper for schedule date headers
This commit is contained in:
@@ -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())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user