kin: KIN-UI-020 Конвертировать VALID_TASK_STATUSES из list в frozenset
This commit is contained in:
parent
cfc4a6ba7d
commit
b824e4babd
1 changed files with 6 additions and 4 deletions
|
|
@ -942,13 +942,15 @@ def test_get_pipeline_logs_ordered_asc(pipeline_conn):
|
|||
def test_circular_reference_protection_has_open_children_returns_false(conn):
|
||||
"""KIN-UI-018 (decision #816): has_open_children возвращает False при циклической ссылке A→B→A.
|
||||
|
||||
Задачи A и B создаются напрямую в БД с взаимными parent_task_id.
|
||||
Задачи A и B в статусе 'done' создаются напрямую в БД с взаимными parent_task_id.
|
||||
Статус 'done' необходим: рекурсия запускается только для done/cancelled потомков,
|
||||
поэтому только с done-задачами цикл реально проходит проверку visited-защиты.
|
||||
Ожидаемый результат: False (не True, не RecursionError).
|
||||
"""
|
||||
models.create_project(conn, "p1", "P1", "/p1")
|
||||
# Создаём задачи без parent сначала
|
||||
models.create_task(conn, "P1-CYC-A", "p1", "Task A")
|
||||
models.create_task(conn, "P1-CYC-B", "p1", "Task B")
|
||||
# Создаём задачи в статусе 'done' — рекурсия проходит через них
|
||||
models.create_task(conn, "P1-CYC-A", "p1", "Task A", status="done")
|
||||
models.create_task(conn, "P1-CYC-B", "p1", "Task B", status="done")
|
||||
# Устанавливаем цикл напрямую в БД, минуя валидацию API
|
||||
conn.execute("UPDATE tasks SET parent_task_id = 'P1-CYC-B' WHERE id = 'P1-CYC-A'")
|
||||
conn.execute("UPDATE tasks SET parent_task_id = 'P1-CYC-A' WHERE id = 'P1-CYC-B'")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue