diff --git a/co-gahusb/app/store.py b/co-gahusb/app/store.py index cc66279..00107e5 100644 --- a/co-gahusb/app/store.py +++ b/co-gahusb/app/store.py @@ -106,6 +106,8 @@ async def update_task(r, task_id, status, role, note=None): if status not in VALID_STATUS: raise ValueError(f"invalid status: {status}") key = TASK_PREFIX + str(task_id) + if not await r.exists(key): + return {"ok": False, "error": "not_found"} mapping = {"status": status} if note is not None: mapping["note"] = note diff --git a/co-gahusb/tests/test_tasks.py b/co-gahusb/tests/test_tasks.py index 03369cb..70a99a1 100644 --- a/co-gahusb/tests/test_tasks.py +++ b/co-gahusb/tests/test_tasks.py @@ -48,3 +48,9 @@ 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") + + +async def test_update_nonexistent_task_returns_not_found(r): + res = await store.update_task(r, 999, "done", "FE") + assert res["ok"] is False + assert res["error"] == "not_found"