feat: add ScheduleCache with multiplatform-settings for offline caching
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
package ch.parano.myice.cache
|
||||
|
||||
import ch.parano.myice.models.Event
|
||||
import com.russhwolf.settings.MapSettings
|
||||
import com.russhwolf.settings.Settings
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class ScheduleCacheTest {
|
||||
|
||||
private fun createCache(): Pair<ScheduleCache, Settings> {
|
||||
val settings = MapSettings()
|
||||
return ScheduleCache(settings) to settings
|
||||
}
|
||||
|
||||
private fun sampleEvent(id: String, eventType: String = "Jeu") = Event(
|
||||
idEvent = id,
|
||||
agegroup = "U13 (Elite)",
|
||||
name = "U13 Elite - HC Ajoie",
|
||||
title = "U13 (Elite)\nGame\nArena",
|
||||
opponent = "HC Ajoie",
|
||||
place = "Arena",
|
||||
start = "2024-11-10T14:00:00",
|
||||
end = "2024-11-10T16:15:00",
|
||||
color = "#e4222e",
|
||||
eventType = eventType,
|
||||
)
|
||||
|
||||
@Test
|
||||
fun testSaveAndLoadEvents() {
|
||||
val (cache, _) = createCache()
|
||||
val events = listOf(sampleEvent("1"), sampleEvent("2"))
|
||||
cache.saveEvents("default", events)
|
||||
|
||||
val loaded = cache.loadEvents("default")
|
||||
assertNotNull(loaded)
|
||||
assertEquals(2, loaded.size)
|
||||
assertEquals("1", loaded[0].idEvent)
|
||||
assertEquals("2", loaded[1].idEvent)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testLoadEventsReturnsNullWhenEmpty() {
|
||||
val (cache, _) = createCache()
|
||||
assertNull(cache.loadEvents("default"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testGetLastUpdated() {
|
||||
val (cache, _) = createCache()
|
||||
assertNull(cache.getLastUpdated("default"))
|
||||
|
||||
cache.saveEvents("default", listOf(sampleEvent("1")))
|
||||
val timestamp = cache.getLastUpdated("default")
|
||||
assertNotNull(timestamp)
|
||||
assertTrue(timestamp > 0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSaveAndLoadFilters() {
|
||||
val (cache, _) = createCache()
|
||||
cache.saveFilters("default", agegroup = "U13 (Elite)", subgroup = "U13 Elite")
|
||||
|
||||
val (agegroup, subgroup) = cache.loadFilters("default")
|
||||
assertEquals("U13 (Elite)", agegroup)
|
||||
assertEquals("U13 Elite", subgroup)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSaveFiltersWithNulls() {
|
||||
val (cache, _) = createCache()
|
||||
cache.saveFilters("default", agegroup = "U13", subgroup = "Elite")
|
||||
cache.saveFilters("default", agegroup = null, subgroup = null)
|
||||
|
||||
val (agegroup, subgroup) = cache.loadFilters("default")
|
||||
assertNull(agegroup)
|
||||
assertNull(subgroup)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testClearCache() {
|
||||
val (cache, _) = createCache()
|
||||
cache.saveEvents("default", listOf(sampleEvent("1")))
|
||||
cache.saveFilters("default", "U13", "Elite")
|
||||
|
||||
cache.clearCache("default")
|
||||
|
||||
assertNull(cache.loadEvents("default"))
|
||||
val (agegroup, subgroup) = cache.loadFilters("default")
|
||||
assertNull(agegroup)
|
||||
assertNull(subgroup)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testClearAllCache() {
|
||||
val (cache, _) = createCache()
|
||||
cache.saveEvents("default", listOf(sampleEvent("1")))
|
||||
cache.saveEvents("leonard", listOf(sampleEvent("2")))
|
||||
|
||||
cache.clearAllCache()
|
||||
|
||||
assertNull(cache.loadEvents("default"))
|
||||
assertNull(cache.loadEvents("leonard"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testTypeFilterPersistence() {
|
||||
val (cache, _) = createCache()
|
||||
cache.saveTypeFilter("default", "GAMES")
|
||||
assertEquals("GAMES", cache.loadTypeFilter("default"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testTypeFilterNullWhenNotSet() {
|
||||
val (cache, _) = createCache()
|
||||
assertNull(cache.loadTypeFilter("default"))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user