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