Files
time_to_leave/CHECKLIST.md
T
2026-05-09 22:47:17 +02:00

2.5 KiB

Phase 9 — Fix Broken Tests (~1 hour)

The API route tests were written against an earlier interface and will fail as-is.

# Item ✔️
53 geocode.test.ts: change ?q=?name= to match the actual route parameter [x] [x]
54 geocode.test.ts: fix expected error strings ("Failed to geocode location""Internal server error" / "No results found") [x] [x]
55 bike-route.test.ts: change ?start= / ?end=?fromLat=&fromLng=&toLat=&toLng= to match actual route [x] [x]
56 bike-route.test.ts: fix expected error strings ("Missing 'start' or 'end' parameter""Missing required parameters ..." and "Failed to fetch bike route""Internal server error") [x] [x]
57 calendar-utils.test.ts (extractEvents): replace hardcoded past dates (2020-01-01, 2023-01-01) with vi.setSystemTime + dates relative to the frozen clock so filters behave as expected [x] [x]

Phase 10 — Fix Architecture & Critical Bugs (~2 hours)

# Item ✔️
58 useJourneys.ts: remove direct HafasClient instantiation; route all HAFAS calls through /api/hafas to prevent direct browser→HAFAS requests (CORS + IP leakage) [x] [x]
59 useBikeRoute.ts: remove direct BikeRoutingClient instantiation; call /api/bike-route instead so OSRM is never contacted directly from the browser [x] [x]
60 useOriginStation.ts: use location.coords.latitude / longitude in the station search instead of the hardcoded "Bahnhof" query; use a HAFAS nearby-station lookup or geocode → nearest-station fallback [x] [x]
61 hafas-client.ts parseHafasTime: replace new Date(y, mo, d, h, m, s) (local TZ) with Vienna-timezone-aware construction — use Intl or a fixed UTC offset — so departure/arrival times are correct when the server is not in CET/CEST [x] [x]
62 api/calendar/route.ts and api/calendar/parse/route.ts: replace the inlined parsing logic with calls to extractEvents() from calendar-utils.ts so cleanLocation() and location-presence filtering are applied consistently [x] [x]
63 useBikeRoute.ts:18: replace `if (!fromLat !fromLng
64 Move HafasClient / GeocodingClient / BikeRoutingClient instances to module scope (or a shared context) so the in-instance caches in GeocodingClient survive across renders [x] [x]