feat(co-gahusb): 작업 보드 (create/claim/update/list, TDD)
This commit is contained in:
50
co-gahusb/tests/test_tasks.py
Normal file
50
co-gahusb/tests/test_tasks.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# co-gahusb/tests/test_tasks.py
|
||||||
|
import pytest
|
||||||
|
from app import store
|
||||||
|
|
||||||
|
|
||||||
|
async def test_create_and_list(r):
|
||||||
|
res = await store.create_task(r, "deploy FE", "FE", created_by="Producer", detail="ship it")
|
||||||
|
tid = res["task_id"]
|
||||||
|
listed = await store.list_tasks(r)
|
||||||
|
t = [t for t in listed["tasks"] if t["id"] == tid][0]
|
||||||
|
assert t["title"] == "deploy FE"
|
||||||
|
assert t["assignee_role"] == "FE"
|
||||||
|
assert t["status"] == "open"
|
||||||
|
assert t["created_by"] == "Producer"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_claim_then_duplicate_claim_rejected(r):
|
||||||
|
tid = (await store.create_task(r, "x", "FE", created_by="Producer"))["task_id"]
|
||||||
|
ok = await store.claim_task(r, tid, "FE")
|
||||||
|
assert ok["ok"] is True
|
||||||
|
assert ok["task"]["status"] == "in_progress"
|
||||||
|
|
||||||
|
dup = await store.claim_task(r, tid, "BE")
|
||||||
|
assert dup["ok"] is False
|
||||||
|
assert dup["held_by"] == "FE"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_update_status(r):
|
||||||
|
tid = (await store.create_task(r, "x", "FE", created_by="Producer"))["task_id"]
|
||||||
|
await store.claim_task(r, tid, "FE")
|
||||||
|
res = await store.update_task(r, tid, "done", "FE", note="finished")
|
||||||
|
assert res["ok"] is True
|
||||||
|
assert res["task"]["status"] == "done"
|
||||||
|
assert res["task"]["note"] == "finished"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_list_filters(r):
|
||||||
|
t1 = (await store.create_task(r, "a", "FE", created_by="Producer"))["task_id"]
|
||||||
|
await store.create_task(r, "b", "BE", created_by="Producer")
|
||||||
|
await store.claim_task(r, t1, "FE")
|
||||||
|
fe = await store.list_tasks(r, assignee_role="FE")
|
||||||
|
assert [t["title"] for t in fe["tasks"]] == ["a"]
|
||||||
|
in_prog = await store.list_tasks(r, status="in_progress")
|
||||||
|
assert [t["title"] for t in in_prog["tasks"]] == ["a"]
|
||||||
|
|
||||||
|
|
||||||
|
async def test_invalid_status_rejected(r):
|
||||||
|
tid = (await store.create_task(r, "x", "FE", created_by="Producer"))["task_id"]
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
await store.update_task(r, tid, "bogus", "FE")
|
||||||
Reference in New Issue
Block a user