182 lines
7.6 KiB
YAML
182 lines
7.6 KiB
YAML
work_item: ORCH-067
|
||
description: >
|
||
План тестов для ORCH-067 (Telegram tracker: bump по умолчанию, статус-строка
|
||
карточки по модели Plane ORCH-066, кликабельный номер задачи в карточке и во
|
||
всех уведомлениях орка). Сеть изолируется: send_telegram/edit_telegram/
|
||
delete_telegram подменяются рекордерами (как в tests/conftest.py и
|
||
tests/test_notify_approve_links.py); БД — временный SQLite, сидируемый фикстурой.
|
||
|
||
tests:
|
||
# --- Группа A: bump по умолчанию (AC-1..AC-4) ---
|
||
- id: TC-01
|
||
type: unit
|
||
description: "Дефолт Settings().tracker_mode == 'bump' без env ORCH_TRACKER_MODE"
|
||
module: tests/test_tracker_bump_default.py
|
||
asserts: "AC-1"
|
||
expected: PASS
|
||
|
||
- id: TC-02
|
||
type: unit
|
||
description: >
|
||
bump-поведение: при повторном update_task_tracker с сохранённым
|
||
tracker_message_id вызывается delete_telegram(old) -> send_telegram(...,
|
||
disable_notification=True) -> set_tracker_message_id(new). Одна карточка.
|
||
module: tests/test_tracker_bump_default.py
|
||
asserts: "AC-2"
|
||
expected: PASS
|
||
|
||
- id: TC-03
|
||
type: unit
|
||
description: >
|
||
bump fail-safe: send_telegram вернул None (нет креды/транзиент) ->
|
||
tracker_message_id не обнуляется, дубликат в вызове не создаётся.
|
||
module: tests/test_tracker_bump_default.py
|
||
asserts: "AC-3"
|
||
expected: PASS
|
||
|
||
- id: TC-04
|
||
type: unit
|
||
description: "ORCH_TRACKER_MODE=edit -> прежнее edit-поведение (editMessageText)"
|
||
module: tests/test_tracker_bump_default.py
|
||
asserts: "AC-4"
|
||
expected: PASS
|
||
|
||
# --- Группа B: статус-строка карточки (AC-5..AC-9) ---
|
||
- id: TC-05
|
||
type: unit
|
||
description: "render_task_tracker содержит явную строку текущего Plane-статуса"
|
||
module: tests/test_tracker_status_line.py
|
||
asserts: "AC-5"
|
||
expected: PASS
|
||
|
||
- id: TC-06
|
||
type: unit
|
||
description: >
|
||
Маппинг stage -> Plane-статус по таблице ТЗ §2.2: created->To Analyse,
|
||
analysis->Analysis, architecture->Architecture, development->Development,
|
||
review->Code-Review, testing->Testing, deploy->Awaiting Deploy, done->Done
|
||
(параметризованный тест по всем stage).
|
||
module: tests/test_tracker_status_line.py
|
||
asserts: "AC-6"
|
||
expected: PASS
|
||
|
||
- id: TC-07
|
||
type: unit
|
||
description: >
|
||
analysis + brd_review_started_at задан + brd_review_ended_at пуст ->
|
||
статус '⏸️ In Review' (ожидание согласования BRD); строка 'Подтверждение
|
||
BRD' с ⏸️/⏳ сохранена; без сетевых вызовов.
|
||
module: tests/test_tracker_status_line.py
|
||
asserts: "AC-7"
|
||
expected: PASS
|
||
|
||
- id: TC-08
|
||
type: unit
|
||
description: >
|
||
Awaiting Deploy ('ожидание Confirm Deploy') и Needs Input ('нужны
|
||
уточнения') корректно отражаются в статус-строке.
|
||
module: tests/test_tracker_status_line.py
|
||
asserts: "AC-8"
|
||
expected: PASS
|
||
|
||
- id: TC-09
|
||
type: unit
|
||
description: >
|
||
render_task_tracker не падает при битых/недоступных данных статуса
|
||
(деградация на stage-маппинг/fallback, исключение не наружу).
|
||
module: tests/test_tracker_status_line.py
|
||
asserts: "AC-9, AC-16"
|
||
expected: PASS
|
||
|
||
# --- Группа C: кликабельный номер в карточке (AC-10..AC-11) ---
|
||
- id: TC-10
|
||
type: unit
|
||
description: >
|
||
При полных данных (plane_web_url не loopback, workspace, project_id по repo,
|
||
plane_issue_id) карточка содержит <a href=".../issues/<id>/">ORCH-NNN</a>
|
||
с корректным URL.
|
||
module: tests/test_tracker_issue_link.py
|
||
asserts: "AC-10"
|
||
expected: PASS
|
||
|
||
- id: TC-11
|
||
type: unit
|
||
description: >
|
||
Fail-safe ссылки в карточке: при отсутствии любого из (web_base/не-loopback,
|
||
workspace, project_id, plane_issue_id) номер выводится html.escape без <a>,
|
||
рендер не падает. Параметризовать по каждому отсутствующему полю.
|
||
module: tests/test_tracker_issue_link.py
|
||
asserts: "AC-11"
|
||
expected: PASS
|
||
|
||
# --- Группа D: единый хелпер и уведомления (AC-12..AC-14) ---
|
||
- id: TC-12
|
||
type: unit
|
||
description: >
|
||
plane_issue_link(...) возвращает HTML-ссылку при достаточных данных и
|
||
html.escape(work_item_id) при недостаточных; никогда не бросает (в т.ч. на
|
||
None-аргументах и loopback-базе).
|
||
module: tests/test_plane_issue_link.py
|
||
asserts: "AC-12"
|
||
expected: PASS
|
||
|
||
- id: TC-13
|
||
type: unit
|
||
description: >
|
||
notify_approve_requested: номер задачи кликабелен (ведёт на страницу Plane),
|
||
сохранён call-to-action 'Approved', ровно одно notifying-сообщение.
|
||
module: tests/test_notify_issue_links.py
|
||
asserts: "AC-13"
|
||
expected: PASS
|
||
|
||
- id: TC-14
|
||
type: unit
|
||
description: >
|
||
notify_error: номер задачи кликабелен при наличии данных, деградирует на
|
||
сырой номер без падения при их отсутствии.
|
||
module: tests/test_notify_issue_links.py
|
||
asserts: "AC-13, AC-12"
|
||
expected: PASS
|
||
|
||
- id: TC-15
|
||
type: integration
|
||
description: >
|
||
Точки send_telegram в stage_engine/launcher/merge_gate/job_reaper/
|
||
security_gate/reconciler/main, где есть work_item_id, используют
|
||
plane_issue_link (или эквивалент) — номер кликабелен. Проверка рекордером
|
||
send_telegram на представительных alert-путях (deploy fail, agent fail,
|
||
QG fail, прод-деплой).
|
||
module: tests/test_notify_issue_links.py
|
||
asserts: "AC-13"
|
||
expected: PASS
|
||
|
||
- id: TC-16
|
||
type: unit
|
||
description: >
|
||
HTML-экранирование: title с '<b>'/'&'/'>' экранируется, <a>-разметка
|
||
остаётся валидной, сообщение не ломается под parse_mode=HTML (карточка и
|
||
уведомления).
|
||
module: tests/test_tracker_issue_link.py
|
||
asserts: "AC-14"
|
||
expected: PASS
|
||
|
||
# --- Группа E: нерегресс (AC-15..AC-18) ---
|
||
- id: TC-17
|
||
type: integration
|
||
description: >
|
||
Инварианты: карточка отправляется с disable_notification=True; одна карточка
|
||
на задачу; транспорт send/edit/delete не изменён по семантике.
|
||
module: tests/test_tracker_bump_default.py
|
||
asserts: "AC-15"
|
||
expected: PASS
|
||
|
||
- id: TC-18
|
||
type: integration
|
||
description: >
|
||
Нерегресс существующих тестов нотификаций (test_notify_approve_links.py,
|
||
test_notify_done_regression.py) и корректная деградация карточки для
|
||
enduro-trails без новых Plane-статусов.
|
||
module: tests/test_notify_done_regression.py
|
||
asserts: "AC-16, AC-17"
|
||
expected: PASS
|