40 lines
2.4 KiB
Markdown
40 lines
2.4 KiB
Markdown
# Dev Report: isolate webhook tests from live Plane API (fix CI)
|
||
Дата: 2026-06-04
|
||
Статус: IN PROGRESS
|
||
|
||
## Задача
|
||
Замокать сетевые Plane-вызовы в 3 тестах tests/test_webhooks.py чтобы они проходили в чистом CI-окружении без доступа к Plane API.
|
||
|
||
## Анализ
|
||
|
||
### Тест 1 — test_plane_webhook_creates_task
|
||
- plane.py:448-449: `from ..plane_sync import fetch_issue_sequence_id` — локальный импорт → патчить `src.plane_sync.fetch_issue_sequence_id`
|
||
- plane.py:534: `from ..plane_sync import add_comment as _add_comment` — локальный импорт → патчить `src.plane_sync.add_comment`
|
||
|
||
### Тест 2 — test_gitea_push_with_adr_advances_stage
|
||
- gitea.py:25: `from ..plane_sync import notify_stage_change as plane_notify_stage` — модульный импорт → патчить `src.webhooks.gitea.plane_notify_stage`
|
||
- РАСХОЖДЕНИЕ С ТЗ: тест assert'ит `mock_launcher.launch.assert_called_once()`, но код вызывает `enqueue_job` из db.py, не `launcher.launch`. Нужно дополнительно мокать `src.webhooks.gitea.enqueue_job` и исправить assert.
|
||
|
||
### Тест 3 — test_gitea_ci_failure_on_development_notifies_qg_failure
|
||
- Уже PASSED в чистом окружении! Дополнительных патчей не нужно.
|
||
|
||
## Сделано
|
||
- [ ] Изучить исходники src/webhooks/plane.py, gitea.py, plane_sync.py
|
||
- [ ] Создать ветку fix/isolate-webhook-tests-from-plane
|
||
- [ ] Применить патчи к tests/test_webhooks.py
|
||
- [ ] Проверить в чистом docker-окружении
|
||
- [ ] Push + PR
|
||
|
||
## Изменённые файлы
|
||
- `tests/test_webhooks.py` — добавлены @patch для изоляции сетевых вызовов Plane
|
||
|
||
## Результат
|
||
(в процессе)
|
||
|
||
## Проблемы и решения
|
||
- Тест 3 уже проходит (расхождение с ТЗ) — не требует изменений
|
||
- Тест 2: ТЗ говорит "только добавить @patch на plane_notify_stage", но этого недостаточно — нужно ещё мокать enqueue_job и исправить assert с launcher.launch
|
||
|
||
## Следующий шаг
|
||
Применить патчи и запустить тесты
|