2.5 KiB
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) |
[ ] | [ ] |
| 59 | useBikeRoute.ts: remove direct BikeRoutingClient instantiation; call /api/bike-route instead so OSRM is never contacted directly from the browser |
[ ] | [ ] |
| 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 |
[ ] | [ ] |
| 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 |
[ ] | [ ] |
| 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 |
[ ] | [ ] |
| 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 |
[ ] | [ ] |