"""Smoke-Tests fuer Tagebuch-CRUD.""" def test_create_diary_entry(client, user, dog): """POST /api/dogs/{id}/diary -> 201 mit Entry.""" r = client.post( f"/api/dogs/{dog['id']}/diary", headers=user["headers"], json={"titel": "Mein erster Eintrag", "text": "Heute war ein toller Tag."}, ) assert r.status_code == 201, r.text entry = r.json() assert entry["titel"] == "Mein erster Eintrag" assert entry["dog_id"] == dog["id"] def test_list_diary_entries(client, user, dog): """GET /api/dogs/{id}/diary listet erstellte Eintraege.""" client.post( f"/api/dogs/{dog['id']}/diary", headers=user["headers"], json={"titel": "Eintrag A", "text": "Erstes Mal Gassi."}, ) client.post( f"/api/dogs/{dog['id']}/diary", headers=user["headers"], json={"titel": "Eintrag B", "text": "Tierarzt."}, ) r = client.get(f"/api/dogs/{dog['id']}/diary", headers=user["headers"]) assert r.status_code == 200 entries = r.json() assert isinstance(entries, list) titles = [e["titel"] for e in entries] assert "Eintrag A" in titles assert "Eintrag B" in titles def test_get_single_diary_entry(client, user, dog): """GET /api/dogs/{id}/diary/{entry_id} liefert genauen Eintrag.""" r = client.post( f"/api/dogs/{dog['id']}/diary", headers=user["headers"], json={"titel": "Einzeleintrag", "text": "Inhalt."}, ) eid = r.json()["id"] r2 = client.get(f"/api/dogs/{dog['id']}/diary/{eid}", headers=user["headers"]) assert r2.status_code == 200 assert r2.json()["titel"] == "Einzeleintrag" def test_delete_diary_entry(client, user, dog): """DELETE entfernt Eintrag (204) — danach 404.""" r = client.post( f"/api/dogs/{dog['id']}/diary", headers=user["headers"], json={"titel": "Loeschen mich", "text": "."}, ) eid = r.json()["id"] r2 = client.delete(f"/api/dogs/{dog['id']}/diary/{eid}", headers=user["headers"]) assert r2.status_code == 204 r3 = client.get(f"/api/dogs/{dog['id']}/diary/{eid}", headers=user["headers"]) assert r3.status_code == 404 def test_diary_unauth(client, dog): """Ohne Token -> 401.""" r = client.get(f"/api/dogs/{dog['id']}/diary") assert r.status_code == 401