Polymorphes akte_notiz-Modell (gleiches entitaet_typ/entitaet_id-Muster wie Dokument/Historie/Mangel), CRUD-Endpunkte, NotizenPanel im Akte-Grid. Löschen nur durch Autor oder Administrator. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import pytest
|
|
|
|
from tests.conftest import auth_header, login
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_notiz_anlegen_und_lesen(client, objekt_mit_position, mitarbeiter_user):
|
|
objekt, _material = objekt_mit_position
|
|
token = await login(client, "mitarbeiter1")
|
|
|
|
angelegt = await client.post(
|
|
"/api/v1/notizen",
|
|
json={"entitaet_typ": "objekt", "entitaet_id": str(objekt.id), "text": "Funkgerät klemmt manchmal"},
|
|
headers=auth_header(token),
|
|
)
|
|
assert angelegt.status_code == 201
|
|
|
|
zweite = await client.post(
|
|
"/api/v1/notizen",
|
|
json={"entitaet_typ": "objekt", "entitaet_id": str(objekt.id), "text": "Rücksprache Hersteller 12.03."},
|
|
headers=auth_header(token),
|
|
)
|
|
assert zweite.status_code == 201
|
|
|
|
liste = await client.get(
|
|
f"/api/v1/notizen?entitaet_typ=objekt&entitaet_id={objekt.id}", headers=auth_header(token)
|
|
)
|
|
assert liste.status_code == 200
|
|
daten = liste.json()
|
|
assert len(daten) == 2
|
|
# neueste zuerst
|
|
assert daten[0]["text"] == "Rücksprache Hersteller 12.03."
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_fremde_notiz_nicht_loeschbar_ausser_admin(client, objekt_mit_position, mitarbeiter_user, admin_user):
|
|
objekt, _material = objekt_mit_position
|
|
token_mitarbeiter = await login(client, "mitarbeiter1")
|
|
|
|
angelegt = await client.post(
|
|
"/api/v1/notizen",
|
|
json={"entitaet_typ": "objekt", "entitaet_id": str(objekt.id), "text": "Testnotiz"},
|
|
headers=auth_header(token_mitarbeiter),
|
|
)
|
|
notiz_id = angelegt.json()["id"]
|
|
|
|
token_admin = await login(client, "admin1")
|
|
abgelehnt = await client.delete(f"/api/v1/notizen/{notiz_id}", headers=auth_header(token_mitarbeiter))
|
|
# eigene Notiz darf der Autor selbst löschen
|
|
assert abgelehnt.status_code == 204
|
|
|
|
zweite = await client.post(
|
|
"/api/v1/notizen",
|
|
json={"entitaet_typ": "objekt", "entitaet_id": str(objekt.id), "text": "Zweite Notiz"},
|
|
headers=auth_header(token_mitarbeiter),
|
|
)
|
|
zweite_id = zweite.json()["id"]
|
|
|
|
erlaubt = await client.delete(f"/api/v1/notizen/{zweite_id}", headers=auth_header(token_admin))
|
|
assert erlaubt.status_code == 204
|