# 🧹 Покрыть тестами шаги конвейера и захват задачи - **Тип:** chore - **Категория:** Очередь — Шаги конвейера не покрыты ничем, а удаление, уровни текста и резка длинных записей переписывают именно их: дальше без тестов идти вслепую. - **Зачем:** Тестовых файлов в проекте два, и оба мимо конвейера: потеря ссылки на файл, двойной ответ пользователю и гонка при захвате не поймаются ничем. - **Теги:** review-2026-08-11 Тестовых файлов в проекте два: приём по HTTP и деление длинного сообщения Telegram. Шаги конвейера — `FindAndRunConversionJob`, `FindAndRunTranscribeJob`, `FindAndRunTranscribeCheckJob` — и воркеры, которые их выполняют, не покрыты ничем. Свойства, названные типовым узлом «Шаг конвейера» в [review.md](../../docs/review.md), сегодня не проверяет ни одна команда: что «задач нет» отличается от отказа, что ссылка на файл не теряется, что повтор не плодит лишних записей, что пользователю отвечают ровно один раз. Три воркера читают общий `*sql.DB`, и теста с параллельным доступом нет тоже. Найдено проходом `review-autotests` ревью кода change `2026-08-11-fix-http-handler-tests`, вопросом темы `autotests`. ## Затрагивает - `internal/service` — новые тесты шагов конвейера; - `internal/controller/worker` — тест на одновременную работу трёх воркеров против одной базы; - подстановки: `internal/adapter/recognizer/memory.go` уже есть, конвертеру и источнику метаданных нужны свои. ## Критерии приёмки - «Задач нет» отличается от отказа и не считается ошибкой. Оракул — тест на пустой базе: шаг возвращает `NoopJobError`, метрика отказов не растёт. - Задача, брошенная на середине шага, достаётся снова по истечении захвата и проходит шаг заново, не плодя вторых файлов. Оракул — тест: прервать шаг, отмотать время захвата, прогнать снова, сверить число записей в `files`. - Три воркера против одной базы не выдают одну задачу дважды. Оракул — тест с параллельным прогоном под `-race`. ## Рамки Модель очереди решена 2026-08-11 — [очередь коллекцией PocketBase](../../docs/adr/ADR-2026-08-11-queue-as-pocketbase-collection.md), — и разведки о ней больше нет. Тесты пишутся под сегодняшний захват.