Test met echte CalDAV-snapshot (dienst 4051) door volledige pipeline

This commit is contained in:
eddy 2026-10-14 16:33:46 +02:00
commit c21d3dc837
2 changed files with 35 additions and 0 deletions

View file

@ -3,6 +3,7 @@ package nl.eddydevink.buschauffeurswekker.caldav
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.ZoneId import java.time.ZoneId
import java.time.ZonedDateTime import java.time.ZonedDateTime
import nl.eddydevink.buschauffeurswekker.core.ShiftPlanner
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Test import org.junit.Test
@ -125,6 +126,29 @@ class IcalTest {
assertEquals("Dienst & meer", event.summary) assertEquals("Dienst & meer", event.summary)
} }
@Test
fun `echte serverresponse geeft de juiste wekkers`() {
// Snapshot van de echte CalDAV-response (ebs_diensten-1, 15-10-2026, dienst 4051 om 06:18).
val resource = javaClass.classLoader.getResourceAsStream("real_ebs_20261015.ics")!!
.bufferedReader().readText()
val event = Ical.firstTimedEvent(resource)!!
assertEquals("4051", event.summary)
assertEquals(
LocalDateTime.of(2026, 10, 15, 6, 18),
event.start.withZoneSameInstant(amsterdam).toLocalDateTime(),
)
val plan = ShiftPlanner.plan(event.start.withZoneSameInstant(amsterdam).toLocalDateTime())
// Afgerond 06:15 → Opstaan 04:15, Wally 04:45, Vertrek 05:45.
assertEquals(
listOf(
LocalDateTime.of(2026, 10, 15, 4, 15),
LocalDateTime.of(2026, 10, 15, 4, 45),
LocalDateTime.of(2026, 10, 15, 5, 45),
),
plan.map { it.time },
)
}
private fun buildVEvent(summary: String, dtstart: String, extra: String = ""): String { private fun buildVEvent(summary: String, dtstart: String, extra: String = ""): String {
val extraLine = if (extra.isBlank()) "" else "$extra\n" val extraLine = if (extra.isBlank()) "" else "$extra\n"
return """ return """

View file

@ -0,0 +1,11 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//scrapedienst//NL
BEGIN:VEVENT
UID:5a33190e-f55f-45fb-8849-3ca2a979e6b7
DTSTAMP:20261001T150733Z
SUMMARY:4051
DTSTART;TZID=Europe/Amsterdam:20261015T061800
DTEND;TZID=Europe/Amsterdam:20261015T124000
END:VEVENT
END:VCALENDAR