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"]