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