test: Die Pruefdatei deckt auch die Nebenraeume ab
Erkennungswoerter einer Kategorie, markierte Woerter, der Stand des zweiten
Faktors und die Bankverbindungen kommen jetzt mit in
ios/Tests/Fixtures/antworten.json. Das Skript gibt die IDs aus der Saat
zurueck, damit ein Pfad wie /categories/{id}/keywords ueberhaupt gebaut
werden kann.
Zwei davon bleiben leer, und das steht auch dort: Eine Markierung entsteht
erst nach fuenf Anwendungen mit Korrekturen, eine Bankanbindung ohne echten
Anbieter gar nicht. Die Felder von BankConnectionOut deckt der Test also
NICHT ab - wer sie aendert, prueft von Hand.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -40,7 +40,7 @@ from app.main import app # noqa: E402
|
||||
ZIEL = Path(__file__).resolve().parents[2] / "ios" / "Tests" / "Fixtures" / "antworten.json"
|
||||
|
||||
|
||||
def _seed(c: TestClient) -> None:
|
||||
def _seed(c: TestClient) -> dict:
|
||||
"""Genug Daten, dass jedes Feld einmal belegt ist.
|
||||
|
||||
Leere Listen pruefen nichts: Ein falscher Feldname in einer Zeile faellt
|
||||
@@ -122,8 +122,18 @@ def _seed(c: TestClient) -> None:
|
||||
"type": "income", "date": heute, "account_id": zweitgiro["id"],
|
||||
"amount_cents": 7500, "payee": "Dauerauftrag"})
|
||||
|
||||
# --- Nebenraeume ------------------------------------------------------
|
||||
# Ein Schlagwort, damit die Liste nicht leer ist. Die Markierung
|
||||
# ("wird oft korrigiert") entsteht erst nach fuenf Anwendungen und laesst
|
||||
# sich hier nicht erzwingen - dort bleibt die Liste leer.
|
||||
c.post(f"/api/categories/{ausgabe['id']}/keywords", json={"word": "supermarkt"})
|
||||
|
||||
PFADE = {
|
||||
return {"kategorie": ausgabe["id"]}
|
||||
|
||||
|
||||
def pfade(ids: dict) -> dict[str, str]:
|
||||
"""Welche Antwort unter welchem Namen in die Pruefdatei kommt."""
|
||||
return {
|
||||
"version": "/api/version",
|
||||
"ichSelbst": "/api/auth/me",
|
||||
"einstellungen": "/api/settings",
|
||||
@@ -142,7 +152,14 @@ PFADE = {
|
||||
"eingang": "/api/inbox",
|
||||
"dubletten": "/api/transactions/dubletten",
|
||||
"uebertragsvorschlaege": "/api/uebertraege/vorschlaege",
|
||||
}
|
||||
"schlagwoerter_der_kategorie": f"/api/categories/{ids['kategorie']}/keywords",
|
||||
"markierteSchlagwoerter": "/api/categories/keywords/flagged",
|
||||
"zweiterFaktor": "/api/auth/2fa/status",
|
||||
# Bleibt leer: Eine Bankanbindung laesst sich ohne echten Anbieter nicht
|
||||
# herstellen. Der Test prueft hier nur, dass sich die leere Liste lesen
|
||||
# laesst - die Felder von BankConnectionOut deckt er nicht ab.
|
||||
"bankverbindungen": "/api/bank/connections",
|
||||
}
|
||||
|
||||
|
||||
def main() -> int:
|
||||
@@ -152,10 +169,10 @@ def main() -> int:
|
||||
if r.status_code != 200:
|
||||
print("Anmeldung fehlgeschlagen:", r.text)
|
||||
return 1
|
||||
_seed(c)
|
||||
ids = _seed(c)
|
||||
|
||||
heraus = {}
|
||||
for name, pfad in PFADE.items():
|
||||
for name, pfad in pfade(ids).items():
|
||||
antwort = c.get(pfad)
|
||||
if antwort.status_code != 200:
|
||||
print(f"{pfad} antwortet {antwort.status_code}: {antwort.text[:200]}")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"must_change_password": false,
|
||||
"must_change_password_reason": null,
|
||||
"totp_enabled": false,
|
||||
"created_at": "2026-10-21T19:21:28.289884",
|
||||
"created_at": "2026-10-21T19:57:08.443998",
|
||||
"mfa_setup_required": false
|
||||
},
|
||||
"einstellungen": [
|
||||
@@ -129,7 +129,7 @@
|
||||
"is_archived": false,
|
||||
"excluded_from_stats": false,
|
||||
"spending_is_good": false,
|
||||
"keyword_count": 0
|
||||
"keyword_count": 1
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
@@ -1339,7 +1339,7 @@
|
||||
"fx_rate": null,
|
||||
"counter_amount_cents": null,
|
||||
"counter_currency": null,
|
||||
"created_at": "2026-10-21T19:21:28.451708"
|
||||
"created_at": "2026-10-21T19:57:08.586391"
|
||||
}
|
||||
],
|
||||
"dubletten": {
|
||||
@@ -1400,5 +1400,19 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"schlagwoerter_der_kategorie": [
|
||||
{
|
||||
"id": 1,
|
||||
"category_id": 1,
|
||||
"word": "supermarkt",
|
||||
"amount_cents": null
|
||||
}
|
||||
],
|
||||
"markierteSchlagwoerter": [],
|
||||
"zweiterFaktor": {
|
||||
"enabled": false,
|
||||
"recovery_codes_left": 0
|
||||
},
|
||||
"bankverbindungen": []
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user