Files
orchestrator/docs/work-items/ORCH-106/04-test-plan.yaml
claude-bot fe0dbea97e
All checks were successful
CI / test (push) Successful in 58s
analyst(ET): auto-commit from analyst run_id=652
2026-06-12 08:30:45 +03:00

69 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
work_item: ORCH-106
stage: analysis
author_agent: analyst
status: ready-for-review
created_at: 2026-06-12
model_used: claude-opus-4-8
track: bug
title: "Регресс-тест: create_state шлёт валидный color (onboard_project.py)"
framework: pytest
scope: >
Покрывается ТОЛЬКО тело POST, формируемое PlaneClient.create_state в
scripts/onboard_project.py (наличие непустого валидного hex-поля color) + неизменность
существующего поведения онбординга. Вне покрытия: реальные сетевые вызовы к Plane CE
(детерминированный CI без сети — перехват _post/httpx.post), выбор палитры/значения цвета,
правки рантайма src/**.
notes: >
Обязательный регресс-тест багфикс-трека (ORCH-019): TC-01 ДОЛЖЕН быть КРАСНЫМ на коде до фикса
(тело без color) и ЗЕЛЁНЫМ после фикса. Тесты детерминированы и без сети: инстанцируется
РЕАЛЬНЫЙ PlaneClient, его _post (или httpx.post) монкипатчится для перехвата (url, payload);
FakePlane из существующего набора НЕ годится для регресса (мок не строит реальное тело).
Полный регресс `pytest tests/ -q` должен оставаться зелёным.
tests:
- id: TC-01
type: unit
description: >
[ОБЯЗАТЕЛЬНЫЙ РЕГРЕСС, red→green] Реальный PlaneClient.create_state(project_id, "STOP",
"cancelled") формирует тело POST с ключом 'color', значение — непустая строка. Перехват
через монкипатч PlaneClient._post: assert 'color' in payload and payload['color'].
КРАСНЫЙ до фикса (тело {'name','group'}), ЗЕЛЁНЫЙ после.
module: tests/test_onboarding_script.py
expected: PASS
- id: TC-02
type: unit
description: >
Значение payload['color'], отправляемое create_state, является валидной hex-строкой цвета
(соответствует hex-формату, напр. ^#?[0-9A-Fa-f]{6}$). Защита от непустого, но невалидного
значения.
module: tests/test_onboarding_script.py
expected: PASS
- id: TC-03
type: unit
description: >
Тело сохраняет существующие ключи: payload содержит корректные 'name' и 'group' (для STOP —
group 'cancelled' из STATE_GROUPS) ВМЕСТЕ с новым 'color'; добавление color не вытесняет
name/group.
module: tests/test_onboarding_script.py
expected: PASS
- id: TC-04
type: integration
description: >
Прогон секции создания статусов онбординга по нескольким статусам (включая STOP, Done,
Confirm Deploy): для КАЖДОГО перехваченное тело create_state несёт непустой валидный color;
ни один статус не отправляется без color.
module: tests/test_onboarding_script.py
expected: PASS
- id: TC-05
type: unit
description: >
Нулевая регрессия контракта: публичная сигнатура create_state(project_id, name, group)
неизменна; существующие онбординг-тесты (FakePlane mutations ('create_state', name, group),
call-site строка 773) остаются зелёными.
module: tests/test_onboarding_script.py
expected: PASS