feat: add event filtering logic, TypeFilter enum, AuthSettings, and OAuthClient interface
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
package ch.parano.myice.filter
|
||||
|
||||
import ch.parano.myice.models.Event
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class EventFilterTest {
|
||||
|
||||
private fun event(
|
||||
id: String = "1",
|
||||
agegroup: String = "U13 (Elite)",
|
||||
name: String = "U13 Elite - HC Ajoie",
|
||||
eventType: String = "Jeu",
|
||||
) = Event(
|
||||
idEvent = id,
|
||||
agegroup = agegroup,
|
||||
name = name,
|
||||
title = "Title",
|
||||
opponent = "Opp",
|
||||
place = "Place",
|
||||
start = "2024-11-10T14:00:00",
|
||||
end = "2024-11-10T16:15:00",
|
||||
color = "#e4222e",
|
||||
eventType = eventType,
|
||||
)
|
||||
|
||||
@Test
|
||||
fun testExtractSubgroupWithSeparator() {
|
||||
assertEquals("U13 Elite", extractSubgroup("U13 Elite - HC Ajoie"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testExtractSubgroupMultipleSeparators() {
|
||||
assertEquals("U13 Elite - Group A", extractSubgroup("U13 Elite - Group A - HC Ajoie"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testExtractSubgroupNoSeparator() {
|
||||
assertEquals("U13 Elite", extractSubgroup("U13 Elite"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testExtractSubgroupEmptyString() {
|
||||
assertEquals("", extractSubgroup(""))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterGamesOnly() {
|
||||
val events = listOf(
|
||||
event(id = "1", eventType = "Jeu"),
|
||||
event(id = "2", eventType = ""),
|
||||
event(id = "3", eventType = "Jeu"),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = null, subgroup = null, typeFilter = TypeFilter.GAMES)
|
||||
assertEquals(2, result.size)
|
||||
assertEquals("1", result[0].idEvent)
|
||||
assertEquals("3", result[1].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterPracticesOnly() {
|
||||
val events = listOf(
|
||||
event(id = "1", eventType = "Jeu"),
|
||||
event(id = "2", eventType = ""),
|
||||
event(id = "3", eventType = ""),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = null, subgroup = null, typeFilter = TypeFilter.PRACTICES)
|
||||
assertEquals(2, result.size)
|
||||
assertEquals("2", result[0].idEvent)
|
||||
assertEquals("3", result[1].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterAll() {
|
||||
val events = listOf(
|
||||
event(id = "1", eventType = "Jeu"),
|
||||
event(id = "2", eventType = ""),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = null, subgroup = null, typeFilter = TypeFilter.ALL)
|
||||
assertEquals(2, result.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterByAgegroup() {
|
||||
val events = listOf(
|
||||
event(id = "1", agegroup = "U13 (Elite)"),
|
||||
event(id = "2", agegroup = "U15"),
|
||||
event(id = "3", agegroup = "U13 (Elite)"),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = "U13 (Elite)", subgroup = null, typeFilter = TypeFilter.ALL)
|
||||
assertEquals(2, result.size)
|
||||
assertEquals("1", result[0].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterBySubgroup() {
|
||||
val events = listOf(
|
||||
event(id = "1", name = "U13 Elite - HC Ajoie"),
|
||||
event(id = "2", name = "U13 Top - HC Geneva"),
|
||||
event(id = "3", name = "U13 Elite - HC Lausanne"),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = null, subgroup = "U13 Elite", typeFilter = TypeFilter.ALL)
|
||||
assertEquals(2, result.size)
|
||||
assertEquals("1", result[0].idEvent)
|
||||
assertEquals("3", result[1].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterCombinedAgegroupAndSubgroup() {
|
||||
val events = listOf(
|
||||
event(id = "1", agegroup = "U13 (Elite)", name = "U13 Elite - HC Ajoie"),
|
||||
event(id = "2", agegroup = "U13 (Elite)", name = "U13 Top - HC Geneva"),
|
||||
event(id = "3", agegroup = "U15", name = "U13 Elite - HC Lausanne"),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = "U13 (Elite)", subgroup = "U13 Elite", typeFilter = TypeFilter.ALL)
|
||||
assertEquals(1, result.size)
|
||||
assertEquals("1", result[0].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFilterGamesAndAgegroup() {
|
||||
val events = listOf(
|
||||
event(id = "1", agegroup = "U13 (Elite)", eventType = "Jeu"),
|
||||
event(id = "2", agegroup = "U13 (Elite)", eventType = ""),
|
||||
event(id = "3", agegroup = "U15", eventType = "Jeu"),
|
||||
)
|
||||
val result = filterEvents(events, agegroup = "U13 (Elite)", subgroup = null, typeFilter = TypeFilter.GAMES)
|
||||
assertEquals(1, result.size)
|
||||
assertEquals("1", result[0].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDistinctAgegroups() {
|
||||
val events = listOf(
|
||||
event(agegroup = "U15"),
|
||||
event(agegroup = "U13 (Elite)"),
|
||||
event(agegroup = "U15"),
|
||||
)
|
||||
val result = events.distinctAgegroups()
|
||||
assertEquals(2, result.size)
|
||||
assertEquals("U13 (Elite)", result[0])
|
||||
assertEquals("U15", result[1])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDistinctSubgroups() {
|
||||
val events = listOf(
|
||||
event(name = "U13 Elite - HC Ajoie"),
|
||||
event(name = "U13 Top - HC Geneva"),
|
||||
event(name = "U13 Elite - HC Lausanne"),
|
||||
)
|
||||
val result = events.distinctSubgroups()
|
||||
assertEquals(2, result.size)
|
||||
assertEquals("U13 Elite", result[0])
|
||||
assertEquals("U13 Top", result[1])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user