Phase 12: Test-Suite (30 pytest-Tests) + CLAUDE.md aktualisiert

tests/:
  conftest.py        - minimale Env-Vars + sys.path-Setup
  test_auth.py       - Magic-Token + JWT Round-Trip (4 Tests)
  test_audit.py      - diff() + _to_json() Helper (8 Tests)
  test_models.py     - Pydantic-Validierung (7 Tests)
  test_source_meta.py - Single Source of Truth Konsistenz (7 Tests)
  test_imports.py    - alle Backend-Module importierbar (4 Tests)

requirements-dev.txt: pytest, ftfy, pyflakes

Tests sind reine Unit-Tests (kein DB-Zugriff, kein HTTP-Server),
laufen in <0.5s, geben sofortiges Catch-Net fuer Syntax/Import-Bugs.

Aufruf: PYTHONPATH=src ./venv/bin/python -m pytest tests/ -v

CLAUDE.md erweitert um:
- Sektion Tests (Framework, Pfad, Ausfuehrung)
- Sektion Phasen-Historie (alle 12 Phasen der Aufraeum-Aktion 2026-05-09
  mit kurzer Erklaerung)
Dieser Commit ist enthalten in:
claude-dev
2026-05-09 03:55:30 +00:00
Ursprung 9000750df2
Commit 00cd81f177
9 geänderte Dateien mit 299 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -193,3 +193,49 @@ shared:
locked: "diff anschauen, ueberlegen ob die Monitor-Aenderung im Verwaltungs-Fork sinnvoll ist"
```
## Tests
```yaml
tests:
framework: pytest
pfad: tests/
ausfuehren: "PYTHONPATH=src ./venv/bin/python -m pytest tests/ -v"
install: "./venv/bin/pip install -r requirements-dev.txt"
abdeckung:
test_auth.py: Magic-Token + JWT Round-Trip
test_audit.py: diff() + _to_json() Helper
test_models.py: Pydantic-Validierung (MagicLink, Org, License, User)
test_source_meta.py: Single Source of Truth Konsistenz
test_imports.py: alle Backend-Module importierbar (Syntax-Catchnet)
philosophie:
- reine Unit-Tests, kein DB-Zugriff, kein HTTP-Server
- schnell (<1 Sekunde fuer das ganze Set)
- sollten lokal vor jedem Commit laufen
```
## Phasen-Historie (Aufraeum-Aktion 2026-05-09)
```yaml
phasen:
P0: Verwaltungs-Staging mit develop-Branch + Auto-Deploy + Promote-UI
P0i: Login-Auth komplett auf Magic-Link (Passwort entfernt)
P1: Backend-Hygiene Quellen (sys.path-Hack weg, Mojibake gefixt, DDL ausgelagert)
P2: Health-Check tenant-faehig + source_health_history (Verlauf bleibt)
P3a: Toast-System statt alert/confirm
P3b: GET /api/sources/meta - Single Source of Truth fuer Kategorien/Typen
P3c: Kundenquellen-Tab Filter+Sort+Bulk-Promote
P4: Stats-Bar + Health-Badge inline + Letzter-Treffer-Spalte
P5: Audit-Spur pro Quelle (ausklappbares Modal)
P6: Verwendungs-Sicht: Aktivitaet 7d/30d + Tenant-Sperren
P7: scripts/sync_shared.py + Lock-Mechanismus + Mojibake-fail-safe
P8a: Pre-Commit-Hook fuer src/shared/ Drift
P8b: Audit-Log UI um resource_id-Filter
P8c: Monitor-Repo Mojibake gefixt (source_suggester + source_health)
P9: Code-Hygiene - alle pyflakes-Issues bereinigt
P10: Bug 2 Buckelwal-Diagnose: Lagentitel-Eigennamen als Pflicht-Keywords
P11: Backup-Rotation via Cron (KEEP=5 letzte .bak-Files)
P12: Test-Suite (pytest, 30 Tests) + Doku
```