2.4 KiB
2.4 KiB
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
Следующий шаг
Применить патчи и запустить тесты