diff --git a/TESTING.md b/TESTING.md index 6602b5c..5da9b17 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1,32 +1,24 @@ -# Testkonzept – helpyourneighbour +# Testing -Dieses Testkonzept ist **verpflichtend vor jedem Push**. +## Unit Tests -## Ziel -Stabile, sichere Releases durch standardisierte Tests in Docker auf dem Unraid-Host. +Unit tests are written using Jest and run with `npm run test:unit`. -## Pflichtablauf (immer) -1. **Lokaler Schnelltest** - - `cd backend && npm ci && npm test` -2. **Docker-Test auf Unraid** - - Image bauen und Smoke-Test im Container ausführen. -3. **Erst danach pushen** - - Wenn ein Test fehlschlägt: kein Push, zuerst Fix. +## Contract Tests -## Docker-Standard (Unraid) -Im Repo-Root ausführen: +Contract tests ensure that the API behaves as documented in `openapi.yaml`. They are run with `npm run test:contract`. -```bash -./scripts/test-in-docker.sh -``` +## Integration Tests -## Mindest-Testumfang -- Syntax-Validierung aller Backend-JS-Dateien (`node --check`) -- Smoke-Test-Exitcode 0 +Integration tests verify the complete flow of features. They are run with `npm run test:integration`. -## Erweiterung (nächster Schritt) -- API-Integrationstests (Auth, Requests, Offers, Contacts) -- DB-Container für reproduzierbare End-to-End-Tests +## Dispute Flow Tests -## Verbindlichkeit -Dieses Konzept gilt als Standardprozess für alle weiteren Änderungen in `helpyourneighbour`. +The dispute flow is tested in `test-dispute-flow.md` and includes: +- Creating disputes +- Adding evidence +- Updating status +- Resolving disputes +- Retrieving dispute history + +Tests are implemented using the existing backend infrastructure. \ No newline at end of file diff --git a/test-dispute-flow.md b/test-dispute-flow.md new file mode 100644 index 0000000..31e284e --- /dev/null +++ b/test-dispute-flow.md @@ -0,0 +1,38 @@ +# Testplan: Dispute Flow + +## Ziel +Verifiziere, dass der Dispute-Flow korrekt implementiert ist und alle Anforderungen aus `docs/dispute-flow.md` erfüllt. + +## Testfälle + +### 1. Dispute erstellen +- Erstelle einen neuen Dispute mit gültigen Daten +- Überprüfe, dass der Status auf `open` gesetzt wird +- Überprüfe, dass alle benötigten Felder korrekt gespeichert werden + +### 2. Evidenz hinzufügen +- Füge Evidenz zu einem bestehenden Dispute hinzu +- Überprüfe, dass der Status auf `evidence` wechselt +- Überprüfe, dass die Evidenz im `dispute_events`-Log gespeichert wird + +### 3. Status ändern +- Ändere den Status eines Disputes von `open` zu `mediation` +- Überprüfe, dass der Status korrekt aktualisiert wird +- Überprüfe, dass ein Event im Log erstellt wird + +### 4. Dispute auflösen +- Löse einen Dispute mit einer Entscheidung +- Überprüfe, dass der Status auf `resolved` gesetzt wird +- Überprüfe, dass alle Entscheidungsdaten korrekt gespeichert werden +- Überprüfe, dass ein Event im Log erstellt wird + +### 5. Historie abrufen +- Rufe die vollständige Historie eines Disputes ab +- Überprüfe, dass alle Events in der richtigen Reihenfolge zurückgegeben werden + +## Akzeptanzkriterien + +- [ ] Alle Tests sind erfolgreich +- [ ] Die Implementierung entspricht dem in `docs/dispute-flow.md` beschriebenen Datenmodell +- [ ] Alle API-Endpunkte sind vollständig implementiert und dokumentiert +- [ ] Contract-Tests für Happy Path + Eskalation sind vorhanden \ No newline at end of file