feat: Präfix System- für Tool-Serien reserviert, Kreditraten-Serie heißt System-Kreditraten (A12-T1)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 07:24:41 +02:00
co-authored by Claude Opus 5.5
parent 5a8e05596f
commit 0a5fa90ae8
6 changed files with 89 additions and 18 deletions
+50
View File
@@ -0,0 +1,50 @@
import pytest
from app.models.views import RESERVED_SCENARIO_NAME
from app.reserved import SYSTEM_PREFIX, is_reserved_name
from app.services.planning_chart import KREDITRATEN
H = {"Authorization": "Bearer test-key"}
def test_systemnamen_leiten_sich_vom_praefix_ab():
assert SYSTEM_PREFIX == "System-"
assert RESERVED_SCENARIO_NAME == "System-Ist"
assert KREDITRATEN == "System-Kreditraten"
@pytest.mark.parametrize("name,expected", [
("System-X", True), ("system-kreditraten", True), (" SYSTEM-Ist ", True),
("Kreditraten", False), ("Systemkosten", False), ("Ist-System", False),
("System", False),
])
def test_is_reserved_name(name, expected):
assert is_reserved_name(name) is expected
@pytest.mark.parametrize("name", ["System-X", "system-kreditraten", " SYSTEM-Ist "])
def test_kategorie_post_reserviert(client, name):
r = client.post("/api/categories", headers=H, json={"name": name})
assert r.status_code == 422
assert r.json()["detail"] == ("Namen, die mit »System-« beginnen, sind für "
"vom Tool erzeugte Einträge reserviert")
def test_kategorie_patch_reserviert(client):
cat = client.post("/api/categories", headers=H, json={"name": "Normal"}).json()
r = client.patch(f"/api/categories/{cat['id']}", headers=H, json={"name": "System-Test"})
assert r.status_code == 422
names = [c["name"] for c in client.get("/api/categories", headers=H).json()]
assert "Normal" in names and "System-Test" not in names
@pytest.mark.parametrize("name", ["Kreditraten", "Systemkosten", "Ist-System"])
def test_kategorie_normale_namen_erlaubt(client, name):
assert client.post("/api/categories", headers=H, json={"name": name}).status_code == 201
@pytest.mark.parametrize("name", ["System-Plan", "system-x"])
def test_szenario_praefix_reserviert(client, name):
r = client.post("/api/scenarios", headers=H, json={"name": name})
assert r.status_code == 422
assert "reserviert" in r.json()["detail"]