kin: KIN-013 Obsidian sync + Revise UI (fixes и тесты)
- obsidian_sync.py: расширен regex для task ID с цифробуквенными префиксами ([A-Z][A-Z0-9]*-\d+) - test_obsidian_sync.py: тест test_sync_updates_task_status обновлён под uppercase PROJ1-001 - TaskDetail.vue: добавлены revise() функция и Revise modal (отправить задачу на доработку) - test_api.py: добавлены test_revise_task и test_revise_not_found 473/473 тестов проходят. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0032b3056a
commit
6b328d7f2d
4 changed files with 60 additions and 4 deletions
|
|
@ -142,6 +142,32 @@ def test_reject_not_found(client):
|
|||
assert r.status_code == 404
|
||||
|
||||
|
||||
def test_revise_task(client):
|
||||
from core.db import init_db
|
||||
from core import models
|
||||
conn = init_db(api_module.DB_PATH)
|
||||
models.update_task(conn, "P1-001", status="review")
|
||||
conn.close()
|
||||
|
||||
r = client.post("/api/tasks/P1-001/revise", json={
|
||||
"comment": "Доисследуй edge case с пустым массивом"
|
||||
})
|
||||
assert r.status_code == 200
|
||||
assert r.json()["status"] == "in_progress"
|
||||
|
||||
# Verify task is in_progress with revise_comment stored
|
||||
conn = init_db(api_module.DB_PATH)
|
||||
row = conn.execute("SELECT status, revise_comment FROM tasks WHERE id = 'P1-001'").fetchone()
|
||||
conn.close()
|
||||
assert row["status"] == "in_progress"
|
||||
assert row["revise_comment"] == "Доисследуй edge case с пустым массивом"
|
||||
|
||||
|
||||
def test_revise_not_found(client):
|
||||
r = client.post("/api/tasks/NOPE/revise", json={"comment": "fix it"})
|
||||
assert r.status_code == 404
|
||||
|
||||
|
||||
def test_task_pipeline_not_found(client):
|
||||
r = client.get("/api/tasks/NOPE/pipeline")
|
||||
assert r.status_code == 404
|
||||
|
|
|
|||
|
|
@ -157,14 +157,14 @@ def test_sync_updates_task_status(db, tmp_vault):
|
|||
tmp_vault.mkdir(parents=True)
|
||||
models.update_project(db, "proj1", obsidian_vault_path=str(tmp_vault))
|
||||
|
||||
task = models.create_task(db, "proj1-001", "proj1", "Do something", status="in_progress")
|
||||
task = models.create_task(db, "PROJ1-001", "proj1", "Do something", status="in_progress")
|
||||
assert task["status"] == "in_progress"
|
||||
|
||||
# Write checkbox file
|
||||
tasks_dir = tmp_vault / "proj1" / "tasks"
|
||||
tasks_dir.mkdir(parents=True)
|
||||
(tasks_dir / "sprint.md").write_text(
|
||||
"- [x] proj1-001 Do something\n",
|
||||
"- [x] PROJ1-001 Do something\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
|
|
@ -172,7 +172,7 @@ def test_sync_updates_task_status(db, tmp_vault):
|
|||
|
||||
assert result["tasks_updated"] == 1
|
||||
assert not result["errors"]
|
||||
updated = models.get_task(db, "proj1-001")
|
||||
updated = models.get_task(db, "PROJ1-001")
|
||||
assert updated["status"] == "done"
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue