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.

65 lines
2.0 KiB
Python

# backend/tests/test_api_notify.py
def test_triage_counts(client):
t = client.get("/api/notifications").json()
assert len(t["now"]) == 6
assert t["counts"]["later"] == 12 # 6 + later_more(6)
assert t["counts"]["held"] == 29 # 6 + held_more(23)
assert t["stats"] == {"total": 47, "seen": 6, "filtered": "87%"}
def test_now_has_why_chip(client):
n1 = next(n for n in client.get("/api/notifications").json()["now"] if n["id"] == "n1")
assert n1["why"] == "VIP 발신자" and n1["tone"] == "coral" and n1["act"] == "답장 초안 보기"
def test_reclassify_to_later(client):
r = client.post("/api/notifications/n1/reclassify", json={"to_bucket": "later"})
assert (
r.json()["bucket"] == "later"
and r.json()["why"] == "내가 미룸"
and r.json()["tone"] == "muted"
)
def test_undo_held_to_now(client):
r = client.post("/api/notifications/h2/undo", json={})
assert (
r.json()["bucket"] == "now" and r.json()["why"] == "되돌림" and r.json()["tone"] == "amber"
)
def test_guard_toggle(client):
assert client.post("/api/notifications/guard", json={"on": False}).json()["on"] is False
def test_senders_have_from_alias(client):
rows = client.get("/api/notifications/senders").json()
assert (
rows[0]["who"] == "수아님"
and rows[0]["from"] == "메일 · 메신저"
and rows[0]["rule"] == "항상 즉시"
)
def test_add_sender(client):
r = client.post(
"/api/notifications/senders",
json={
"who": "뉴스레터 X",
"from_label": "메일",
"rule": "저녁 다이제스트",
"bucket": "later",
},
)
assert r.json()["bucket"] == "later"
def test_digests(client):
rows = client.get("/api/notifications/digests").json()
assert len(rows) == 3
assert rows[2]["done"] is False # 저녁 다이제스트 미전달
def test_notification_404(client):
assert client.post("/api/notifications/nope/undo", json={}).status_code == 404