From c21d3dc83742bc8a5bd6e67f3c92dfdde4062d2a Mon Sep 17 00:00:00 2001 From: eddy Date: Wed, 14 Oct 2026 16:33:46 +0200 Subject: [PATCH] Test met echte CalDAV-snapshot (dienst 4051) door volledige pipeline --- .../buschauffeurswekker/caldav/IcalTest.kt | 24 +++++++++++++++++++ app/src/test/resources/real_ebs_20261015.ics | 11 +++++++++ 2 files changed, 35 insertions(+) create mode 100644 app/src/test/resources/real_ebs_20261015.ics diff --git a/app/src/test/java/nl/eddydevink/buschauffeurswekker/caldav/IcalTest.kt b/app/src/test/java/nl/eddydevink/buschauffeurswekker/caldav/IcalTest.kt index 7c1b7a2..f2e0b3b 100644 --- a/app/src/test/java/nl/eddydevink/buschauffeurswekker/caldav/IcalTest.kt +++ b/app/src/test/java/nl/eddydevink/buschauffeurswekker/caldav/IcalTest.kt @@ -3,6 +3,7 @@ package nl.eddydevink.buschauffeurswekker.caldav import java.time.LocalDateTime import java.time.ZoneId import java.time.ZonedDateTime +import nl.eddydevink.buschauffeurswekker.core.ShiftPlanner import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Test @@ -125,6 +126,29 @@ class IcalTest { 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 { val extraLine = if (extra.isBlank()) "" else "$extra\n" return """ diff --git a/app/src/test/resources/real_ebs_20261015.ics b/app/src/test/resources/real_ebs_20261015.ics new file mode 100644 index 0000000..7b2a241 --- /dev/null +++ b/app/src/test/resources/real_ebs_20261015.ics @@ -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