feat(tests): add QA test suites for onboarding and departmental logic validation

- **Onboarding (B-2):** Extracted `OnboardingValidator` and added `OnboardingValidatorTest` for edge-case validations (17 new unit tests: field guards, double-click prevention, cancel/reset behavior, `rememberSaveable` regression fix).
- **Departmental Logic (B-3):** Extended `AbteilungsRegelServiceTest` with 14 new tests covering CSN-C-NEU splitting logic (≤95 cm: license-free/licensed, ≥100 cm: R1/R2+), Caprilli regressions, and organizational/separate award scenarios.
- Updated `AbteilungsRegelService.kt` to implement CSN-C-NEU logic and added `ORGANISATORISCH` + `SEPARATE_SIEGEREHRUNG` enums for new rules.
- Updated Changelog and QA roadmap with completed tasks.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-03 11:46:00 +02:00
parent 7ff48ed3d7
commit 59f7f8d4ad
8 changed files with 432 additions and 22 deletions
+19 -12
View File
@@ -26,19 +26,26 @@
- [ ] SingleTop-Tabs: kein doppelter Stack-Eintrag bei Tab-Wechsel
- [ ] Logout poppt MainShell komplett (keine Screens im Back-Stack)
- [ ] **B-2** | Test-Suite: Onboarding-Wizard Edge-Cases
- [ ] Leere Pflichtfelder → Speichern-Button bleibt deaktiviert
- [ ] Schnelles Doppelklick auf „Weiter" / „Speichern" → kein doppelter Submit
- [ ] Abbrechen mitten im Wizard → kein inkonsistenter Zustand
- [ ] Zurück-Navigation: Gerätename und Sicherheitsschlüssel bleiben erhalten (`rememberSaveable`)
- [ ] Ungültige OEPS-Nummer → Fehlermeldung sichtbar, Submit gesperrt
- [x] **B-2** | Test-Suite: Onboarding-Wizard Edge-Cases*3. April 2026*
- [x] Leere Pflichtfelder → Speichern-Button bleibt deaktiviert
- [x] Schnelles Doppelklick auf „Weiter" / „Speichern" → kein doppelter Submit
- [x] Abbrechen mitten im Wizard → kein inkonsistenter Zustand
- [x] Zurück-Navigation: Gerätename und Sicherheitsschlüssel bleiben erhalten (`rememberSaveable`)
- **Fix:** `remember``rememberSaveable` in `OnboardingScreen.kt`
- **Neu:** `OnboardingValidator`-Objekt extrahiert für isolierte Unit-Tests
- **Tests:** `OnboardingValidatorTest.kt` (17 Tests, alle GRÜN)
- [ ] Ungültige OEPS-Nummer → Fehlermeldung sichtbar, Submit gesperrt *(offen: abhängig von C-3)*
- [ ] **B-3** | Test-Suite: Abteilungs-Logik
- [ ] CSN-C-NEU ≤95cm: Pflicht-Teilung `ohne Lizenz` / `mit Lizenz` wird vorgeschlagen
- [ ] CSN-C-NEU ≥100cm: Pflicht-Teilung `R1` / `R2+` wird vorgeschlagen
- [ ] `ORGANISATORISCH`: Gesamtrangliste korrekt zusammengeführt
- [ ] `SEPARATE_SIEGEREHRUNG`: Abteilungen werden nicht zusammengeführt
- [ ] Basis: `OetoValidatorsTest.kt`-Grenzfälle aus Rulebook B-1
- [x] **B-3** | Test-Suite: Abteilungs-Logik*3. April 2026*
- [x] CSN-C-NEU ≤95cm: Pflicht-Teilung `ohne Lizenz` / `mit Lizenz` wird vorgeschlagen
- [x] CSN-C-NEU ≥100cm: Pflicht-Teilung `R1` / `R2+` wird vorgeschlagen
- [x] `ORGANISATORISCH`: Gesamtrangliste korrekt zusammengeführt
- [x] `SEPARATE_SIEGEREHRUNG`: Abteilungen werden nicht zusammengeführt
- [x] Caprilli-Regression abgesichert (LIZENZFREI → Abt. 1, R1 → Abt. 2)
- [x] Grenzfälle 90 cm und 110 cm abgedeckt
- **Neu:** `ORGANISATORISCH` + `SEPARATE_SIEGEREHRUNG` in `AbteilungsTeilungsTypE` ergänzt
- **Fix:** CSN-C-NEU-Logik in `AbteilungsRegelService.kt` implementiert
- **Tests:** `AbteilungsRegelServiceTest.kt` (14 neue Tests, alle GRÜN)
- [ ] **B-4** | Test-Suite: ViewModel-Verhalten
- [ ] State-Initialisierung korrekt (Loading-State beim Start)