feat(akte): FILE-009 Freitext-Notizen an beliebiger Ressource
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
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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
|
||||
Reference in New Issue
Block a user