Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
import pytest
|
|
|
|
from tests.conftest import auth_header, login
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_materialset_crud_und_mitglieder(client, db_session, admin_user, material_factory):
|
|
material_a = await material_factory("Kompresse")
|
|
material_b = await material_factory("Pflaster")
|
|
token = await login(client, "admin1")
|
|
|
|
erstellt = await client.post(
|
|
"/api/v1/material-sets",
|
|
json={"name": "Verbandsset", "beschreibung": "Standard-Verbandsset"},
|
|
headers=auth_header(token),
|
|
)
|
|
assert erstellt.status_code == 201
|
|
set_id = erstellt.json()["id"]
|
|
assert erstellt.json()["mitglieder"] == []
|
|
|
|
hinzugefuegt = await client.put(
|
|
f"/api/v1/material-sets/{set_id}/mitglieder/{material_a.id}",
|
|
json={"menge": "2"},
|
|
headers=auth_header(token),
|
|
)
|
|
assert hinzugefuegt.status_code == 204
|
|
await client.put(
|
|
f"/api/v1/material-sets/{set_id}/mitglieder/{material_b.id}",
|
|
json={"menge": "1"},
|
|
headers=auth_header(token),
|
|
)
|
|
|
|
liste = await client.get("/api/v1/material-sets", headers=auth_header(token))
|
|
eintrag = next(s for s in liste.json() if s["id"] == set_id)
|
|
assert len(eintrag["mitglieder"]) == 2
|
|
|
|
entfernt = await client.delete(
|
|
f"/api/v1/material-sets/{set_id}/mitglieder/{material_b.id}", headers=auth_header(token)
|
|
)
|
|
assert entfernt.status_code == 204
|
|
|
|
liste_danach = await client.get("/api/v1/material-sets", headers=auth_header(token))
|
|
eintrag_danach = next(s for s in liste_danach.json() if s["id"] == set_id)
|
|
assert len(eintrag_danach["mitglieder"]) == 1
|
|
assert eintrag_danach["mitglieder"][0]["material_id"] == material_a.id
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_materialset_nur_materialverantwortliche_schreiben(client, mitarbeiter_user):
|
|
token = await login(client, "mitarbeiter1")
|
|
response = await client.post(
|
|
"/api/v1/material-sets", json={"name": "X"}, headers=auth_header(token)
|
|
)
|
|
assert response.status_code == 403
|