Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
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"]
|