Files
MABEA/backend/tests/test_materialset.py
patrickandClaude Sonnet 5 52bf7d9ec9
CI / backend-tests (push) Successful in 2m55s
CI / frontend-build (push) Successful in 19s
feat(assets): ASSET-007 Material-Sets (Kits), ASSET-008 Consumable-Doku korrigiert
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:22:02 +02:00

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