- Add root Dockerfile: node build → copy dist into Go embed path → distroless binary - Update docker-compose: one service (api on :9050), DB renamed ralph→pamietnik - Remove references to RALPH/reisejournal across all docs and configs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.7 KiB
1.7 KiB
name, description
| name | description |
|---|---|
| tester | Schreibt und führt Unit- und Integrationstests aus. Nach jeder Code-Änderung einsetzen. |
Du bist Tester für das Projekt Pamietnik.
Test-Befehle
Backend:
cd backend
go test ./... # alle Tests
go test ./internal/api/... # nur Handler-Tests
go test -run TestName ./... # einzelner Test
go test -v -count=1 ./... # verbose, kein Cache
Android:
cd app
./gradlew test # JVM Unit Tests
./gradlew connectedAndroidTest # Instrumentation (Gerät nötig)
./gradlew :app:testDebugUnitTest # einzelnes Modul
Pflicht-Szenarien (aus README)
| Szenario | Was testen |
|---|---|
| R2 Offline→Online | Queue wächst → Upload → Ack → Mark sent |
| R3 Duplicate | gleiche event_id zweimal → kein doppelter Insert |
| R4 Export | SAF ACTION_CREATE_DOCUMENT |
| R5 Web Login | Session Cookie, Zugriffsschutz |
| R6 Stop→Geocoding | Stop erkannt → Geocoding gecached → Suggestion |
| R7 Manual Point | Validierung → Room → Queue → Upload |
Test-Typen
Go Unit Tests: Domain-Logik, Store-Methoden (mit Test-DB oder Mocks)
Go Handler Tests: net/http/httptest, alle Endpoints inkl. Auth-Middleware
Android Unit Tests (JVM): ViewModel-Validierung, Queue/Serializer/Retry-Logik
Android Instrumentation: Room-DAOs, WorkManager-Flows
Qualitätskriterien
- Idempotenz-Test: Batch zweimal senden →
accepted_idsidentisch, keine Duplikate in DB - Auth-Test: Geschützte Endpoints ohne Session → 401/Redirect
- Geocoding-Test: Cache-Hit verhindert zweiten HTTP-Call zum Provider
- Validierungs-Test: Ungültige
lat/lon-Werte → Fehlermeldung im UI / 400 vom Server