Files
MABEA/backend/tests/test_stammdaten.py
T
patrickandClaude Sonnet 5 2f11011ed1
CI / backend-tests (push) Successful in 57s
CI / frontend-build (push) Successful in 20s
Admin-Portal: Bearbeiten für Bereich/Kategorie/Objekttyp/Standort/Benutzer,
Vorlagen-Versionierung und Objekt-Duplizieren im Frontend nachgerüstet

Backend: PATCH-Endpoints für Bereich/Kategorie/Standort/Objekttyp ergänzt
(analog zu Material), die bislang fehlten und Bearbeiten grundsätzlich
unmöglich machten.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
2026-09-04 09:55:52 +02:00

125 lines
4.3 KiB
Python

import pytest
from tests.conftest import auth_header, login
@pytest.mark.asyncio
async def test_admin_can_create_bereich(client, admin_user):
token = await login(client, "admin1")
response = await client.post(
"/api/v1/bereiche", json={"name": "Rettungsdienst"}, headers=auth_header(token)
)
assert response.status_code == 201
assert response.json()["name"] == "Rettungsdienst"
@pytest.mark.asyncio
async def test_mitarbeiter_cannot_create_bereich(client, mitarbeiter_user):
token = await login(client, "mitarbeiter1")
response = await client.post(
"/api/v1/bereiche", json={"name": "Rettungsdienst"}, headers=auth_header(token)
)
assert response.status_code == 403
@pytest.mark.asyncio
async def test_mitarbeiter_can_list_bereiche(client, mitarbeiter_user, admin_user, db_session):
from app.models.stammdaten import Bereich
db_session.add(Bereich(name="KatS"))
await db_session.flush()
token = await login(client, "mitarbeiter1")
response = await client.get("/api/v1/bereiche", headers=auth_header(token))
assert response.status_code == 200
assert any(b["name"] == "KatS" for b in response.json())
@pytest.mark.asyncio
async def test_material_lifecycle(client, admin_user):
token = await login(client, "admin1")
create_response = await client.post(
"/api/v1/materialien",
json={"name": "Kompresse steril", "einheit": "Stück", "materialtyp": "standard"},
headers=auth_header(token),
)
assert create_response.status_code == 201
material_id = create_response.json()["id"]
patch_response = await client.patch(
f"/api/v1/materialien/{material_id}",
json={"aktiv": False},
headers=auth_header(token),
)
assert patch_response.status_code == 200
assert patch_response.json()["aktiv"] is False
@pytest.mark.asyncio
async def test_material_not_found(client, admin_user):
token = await login(client, "admin1")
response = await client.get("/api/v1/materialien/999999", headers=auth_header(token))
assert response.status_code == 404
@pytest.mark.asyncio
async def test_admin_can_update_bereich(client, admin_user):
token = await login(client, "admin1")
erstellt = await client.post("/api/v1/bereiche", json={"name": "Alt"}, headers=auth_header(token))
bereich_id = erstellt.json()["id"]
response = await client.patch(
f"/api/v1/bereiche/{bereich_id}", json={"name": "Neu"}, headers=auth_header(token)
)
assert response.status_code == 200
assert response.json()["name"] == "Neu"
@pytest.mark.asyncio
async def test_admin_can_update_kategorie(client, admin_user):
token = await login(client, "admin1")
bereich = await client.post("/api/v1/bereiche", json={"name": "B"}, headers=auth_header(token))
erstellt = await client.post(
"/api/v1/kategorien",
json={"bereich_id": bereich.json()["id"], "name": "Alt"},
headers=auth_header(token),
)
kategorie_id = erstellt.json()["id"]
response = await client.patch(
f"/api/v1/kategorien/{kategorie_id}", json={"name": "Neu"}, headers=auth_header(token)
)
assert response.status_code == 200
assert response.json()["name"] == "Neu"
@pytest.mark.asyncio
async def test_admin_can_update_standort(client, admin_user):
token = await login(client, "admin1")
erstellt = await client.post("/api/v1/standorte", json={"name": "Alt"}, headers=auth_header(token))
standort_id = erstellt.json()["id"]
response = await client.patch(
f"/api/v1/standorte/{standort_id}", json={"name": "Neu"}, headers=auth_header(token)
)
assert response.status_code == 200
assert response.json()["name"] == "Neu"
@pytest.mark.asyncio
async def test_admin_can_update_objekttyp(client, admin_user):
token = await login(client, "admin1")
bereich = await client.post("/api/v1/bereiche", json={"name": "B"}, headers=auth_header(token))
erstellt = await client.post(
"/api/v1/objekttypen",
json={"bereich_id": bereich.json()["id"], "name": "Alt"},
headers=auth_header(token),
)
objekttyp_id = erstellt.json()["id"]
response = await client.patch(
f"/api/v1/objekttypen/{objekttyp_id}", json={"name": "Neu"}, headers=auth_header(token)
)
assert response.status_code == 200
assert response.json()["name"] == "Neu"