Tests: pytest-Suite für Konten, Haushalt, Kanban, Reisen und Migrationen

- backend/tests: jede Test-Funktion bekommt eine frische Datenbank;
  test_migrationen.py baut ältere Datenbank-Stände nach und prüft die
  verlustfreie Umstellung (auch zweiter Start ohne Änderung)
- requirements-dev.txt mit pytest
- Fix (von den Tests gefunden): Eine neue, leere Datenbank bekam keine
  erste Liste "Zuhause"; jetzt einmalig beim ersten Start

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
guyg1474andClaude Opus 5.5 committed 2026-10-15 18:07:54 +02:00
1 parent dc4ce18593
commit 79cbaab092
10 files changed
+478

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
BERLIN = {"geonameId": 2950159, "name": "Berlin", "country": "DE", "lat": 52.52, "lon": 13.41, "population": 3426354, "capital": True}
LEIDEN = {"geonameId": 2751773, "name": "Leiden", "country": "NL", "lat": 52.16, "lon": 4.49}
def test_staedte_anderer_nur_lesend(login):
anna, ben = login("anna"), login("ben")
anna.post("/api/reisen/staedte", json=BERLIN)
data = ben.get("/api/reisen").json()
assert data["cities"] == []
assert [(p["name"], [c["name"] for c in p["cities"]]) for p in data["others"]] == [("Anna", ["Berlin"])]
city_id = data["others"][0]["cities"][0]["id"]
assert ben.delete(f"/api/reisen/staedte/{city_id}").status_code == 404
assert anna.get("/api/reisen").json()["others"] == []
def test_hauptstadt_kennzeichen(login):
anna = login("anna")
anna.post("/api/reisen/staedte", json=BERLIN)
data = anna.post("/api/reisen/staedte", json=LEIDEN).json()
# Mit Angabe aus der Suche gespeichert, ohne Angabe "unbekannt" (wird im Hintergrund nachgetragen)
assert {c["name"]: c["capital"] for c in data["cities"]} == {"Berlin": True, "Leiden": None}
def test_doppelte_stadt_wird_ignoriert(login):
anna = login("anna")
anna.post("/api/reisen/staedte", json=BERLIN)
assert len(anna.post("/api/reisen/staedte", json=BERLIN).json()["cities"]) == 1
def test_land_markieren(login):
anna = login("anna")
assert anna.put("/api/reisen/laender/IS").json()["countries"] == ["IS"]
assert anna.delete("/api/reisen/laender/IS").json()["countries"] == []
assert anna.put("/api/reisen/laender/xx").status_code == 400