fix: Uhrzeit-Wraparound-Flakiness in MissingTeachingTime-Tests
CI / build-and-test (push) Canceled after 0s
CI / build-and-test (push) Canceled after 0s
TimeOnly.FromDateTime(DateTime.Now).AddHours(+-2) wickelt bei Mitternacht um (TimeOnly hat keinen Datumsanteil) - je nach Ausfuehrungsuhrzeit (ca. 22:00-02:00) landete "+2 Stunden" zeitlich vor statt nach "jetzt" oder umgekehrt, wodurch zwei Tests zufaellig rot wurden statt das eigentliche Verhalten (Wartezeit nach Unterrichtsende) zu pruefen. Per Gegenprobe auf unveraendertem main bestaetigt: dieselbe Flakiness besteht dort bereits. DashboardViewModel erhaelt einen optionalen Func<DateTime>? now-Konstruktorparameter (Default DateTime.Now, gleiches Muster wie die bereits bestehenden optionalen annualPlanEvents/ schoolWeather-Parameter) und nutzt ihn statt direkter DateTime.Now-Aufrufe in Load() und LoadMissingTeachingTime. Die beiden betroffenen Tests injizieren jetzt einen festen Referenzzeitpunkt (ein Feiertags-freier Dienstag im September) und sind damit unabhaengig von der tatsaechlichen Ausfuehrungsuhrzeit deterministisch gruen. Details siehe TODO.md, Abschnitt 9 (Dashboard).
This commit is contained in:
@@ -3265,6 +3265,19 @@ Sitzungszustand (keine Persistenz in `dashboardsettings.json`, das dortige Forma
|
||||
Kachel-Liste ohne Platz für Sub-Filter je Art). "Klausurwochen" bleibt weiterhin eine eigene Kachel
|
||||
(Wochen-Aggregat, kein Einzelvorgang zum Abhaken/Anklicken).
|
||||
|
||||
**Nachtrag Uhrzeit-Wraparound-Bug (September 2026):** Zwei `MissingTeachingTime`-Tests bauten ihr
|
||||
"Unterrichtsende" bisher aus `TimeOnly.FromDateTime(DateTime.Now).AddHours(±2)`. `TimeOnly` wickelt
|
||||
bei Mitternacht um (kein Datumsanteil) — bei Testausführung zwischen ca. 22:00 und 02:00 Uhr wurde
|
||||
aus "+2 Stunden" dadurch ein Ende, das *vor* statt nach dem echten Ablauf des 30-Minuten-Fensters
|
||||
lag (oder umgekehrt bei "-2 Stunden"), je nach Ausführungsuhrzeit zufällig rot. `DashboardViewModel`
|
||||
erhält deshalb einen optionalen `Func<DateTime>? now`-Konstruktorparameter (Default `DateTime.Now`,
|
||||
gleiches Muster wie die bestehenden optionalen `annualPlanEvents`/`schoolWeather`-Parameter — DI
|
||||
löst unregistrierte optionale Parameter über ihren Default auf) und nutzt ihn in `Load()` sowie
|
||||
`LoadMissingTeachingTime` statt direkter `DateTime.Now`-Aufrufe. Die beiden betroffenen Tests
|
||||
injizieren jetzt einen festen Referenzzeitpunkt (`FixedNow`, ein Dienstag im September — bewusst
|
||||
gewählt, weil in diesem Monat kein bundesweiter oder länderspezifischer Feiertag liegt) und sind
|
||||
damit unabhängig von der tatsächlichen Ausführungsuhrzeit deterministisch grün.
|
||||
|
||||
---
|
||||
|
||||
## 10. Sync & Server
|
||||
|
||||
Reference in New Issue
Block a user