You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
# backend/tests/test_approvals_service.py — 큐 분기 / 상태 전이
|
|
def test_derive_queue_mixed(client):
|
|
q = client.get("/api/approvals").json()
|
|
assert q["autonomy"] == "mixed"
|
|
# high 3(phase-7) 대기, low 3 자동
|
|
assert len(q["pending"]) == 3 and len(q["done"]) == 3
|
|
assert {a["risk"] for a in q["pending"]} == {"high"}
|
|
assert {a["risk"] for a in q["done"]} == {"low"}
|
|
|
|
|
|
def test_autonomy_approval_first_all_pending(client):
|
|
client.patch("/api/approvals/autonomy", json={"level": "approval_first"})
|
|
q = client.get("/api/approvals").json()
|
|
assert len(q["pending"]) == 6 and len(q["done"]) == 0
|
|
assert q["badges_appr"] == 6
|
|
|
|
|
|
def test_autonomy_full_auto_empty_queue(client):
|
|
client.patch("/api/approvals/autonomy", json={"level": "full_auto"})
|
|
q = client.get("/api/approvals").json()
|
|
assert len(q["pending"]) == 0 and len(q["done"]) == 6 # 빈 큐 → appr-empty
|
|
|
|
|
|
def test_invalid_autonomy_422(client):
|
|
r = client.patch("/api/approvals/autonomy", json={"level": "bogus"})
|
|
assert r.status_code == 422
|
|
|
|
|
|
def test_approve_and_undo_cycle(client):
|
|
a4 = client.post("/api/approvals/a4/approve").json()
|
|
assert a4["status"] == "executed"
|
|
back = client.post("/api/approvals/a4/undo").json()
|
|
assert back["status"] == "undone"
|
|
q = client.get("/api/approvals").json() # undone → 다시 pending 으로 표시
|
|
assert any(a["id"] == "a4" for a in q["pending"])
|
|
|
|
|
|
def test_approve_all(client):
|
|
n = client.post("/api/approvals/approve-all").json()["approved"]
|
|
assert n == 3 # mixed 의 high 3건
|
|
q = client.get("/api/approvals").json()
|
|
assert len(q["pending"]) == 0
|
|
|
|
|
|
def test_saved_and_count_constants(client):
|
|
q = client.get("/api/approvals").json()
|
|
assert q["saved_today"] == "47분" and q["auto_count_night"] == 7
|
|
assert len(q["log"]) == 4
|
|
|
|
|
|
def test_approve_404(client):
|
|
assert client.post("/api/approvals/nope/approve").status_code == 404
|
|
|
|
|
|
def test_execute_equals_approve(client):
|
|
a5 = client.post("/api/approvals/a5/execute").json()
|
|
assert a5["status"] == "executed"
|