import pytest from tests.conftest import auth_header, login @pytest.mark.asyncio async def test_ausgabe_rueckgabe_zyklus(client, admin_user, materialverantwortlicher_user, material_factory): token = await login(client, "admin1") material = await material_factory("Funkgerät") ausgabe = await client.post( "/api/v1/ausgaben", json={ "material_id": material.id, "menge": "1", "empfaenger_id": materialverantwortlicher_user.id, "zweck": "Übung", }, headers=auth_header(token), ) assert ausgabe.status_code == 201 daten = ausgabe.json() assert daten["status"] == "offen" assert daten["rueckgabe_am"] is None assert daten["ausgegeben_von"] == admin_user.id offene = await client.get("/api/v1/ausgaben?status_filter=offen", headers=auth_header(token)) assert len(offene.json()) == 1 rueckgabe = await client.post( f"/api/v1/ausgaben/{daten['id']}/rueckgabe", headers=auth_header(token) ) assert rueckgabe.status_code == 200 assert rueckgabe.json()["status"] == "zurueck" assert rueckgabe.json()["rueckgabe_am"] is not None doppelt = await client.post( f"/api/v1/ausgaben/{daten['id']}/rueckgabe", headers=auth_header(token) ) assert doppelt.status_code == 409 offene2 = await client.get("/api/v1/ausgaben?status_filter=offen", headers=auth_header(token)) assert len(offene2.json()) == 0 @pytest.mark.asyncio async def test_rueckgabe_unbekannte_ausgabe_404(client, admin_user): token = await login(client, "admin1") response = await client.post( "/api/v1/ausgaben/00000000-0000-0000-0000-000000000000/rueckgabe", headers=auth_header(token), ) assert response.status_code == 404