P1: Стабилизировать полный EUnit suite (фикстуры admin handlers) #36
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
Полный прогон
rebar3 eunitдаёт сотни падений (~237 из ~585): в основном{aborted,{no_exists,[admin,...]}}в admin handler unit-тестах иundefнаcowboy_req:path/1без meck. Это ломает сигнал «зелёный suite» и маскирует регрессии.Влияние
Нельзя опираться на полный eunit как на gate; локальный
make test/ полный eunit не даёт доверия к handler-слою.Ожидаемый результат
Стабильный полный eunit: фикстуры создают нужные Mnesia-таблицы (или мокают
admin_utils/core_admin), meck покрывает используемыеcowboy_req:*(в т.ч.path/1), нет каскадных падений из-за порядка тестов.Критерии приёмки
rebar3 eunit(полный suite) — 0 failures или явный allowlist с обоснованиемadmin/ мокis_admincowboy_req:path/1там, где handlers читают path (например banned-words batch)Файлы (подсказка)
EventHubBack/test/unit/admin_handler_*_tests.erlEventHubBack/test/unit/admin_handler_banned_words_tests.erlEventHubBack/test/unit/admin_handler_moderation_tests.erlПриоритет
P1
Связь
Контекст: EventHub/EventHubBack#35
cursor-ai referenced this issue2026-07-17 00:40:21 +03:00
Беру задачу в работу из Cursor. Сначала предложу варианты подхода к переписыванию unit-тестов (с минимизацией моков и повышением покрытия), затем жду согласования перед реализацией.
Прогресс (вариант 1)
Полный
rebar3 eunit: 595 tests, 0 failures (WSL, OTP 28).Что сделано
test/unit/eh_test_support.erl: in-memory Mnesia (ram_copies), seed admin, JWT, thin fakecowboy_req(meck только на HTTP-границе),future_start/0/days_from_now/1.admin_handler_*_tests: реальныеcore_*/admin_utils/auth_admin, без моков domain-слоя; закрытыpath/1, таблицаadmin, audit.core_admin_tests,core_admin_audit_tests,core_user_tests; обновлёнadmin_utils_tests.core_*/logic_*/ booking / ws (create/3,event_in_past,is_adminи т.д.).Cover (eunit)
Общий total ~40% (тянут вниз CT-only / infra / user handlers без unit). Ключевые admin/core модули покрыты unit-сьютом; HTML:
_build/test/cover/index.html.Критерии #36
cowboy_req:path/1(banned-words batch)Коммит/PR пока не создавал — жду указания.
Расширяю unit-покрытие: пишу eunit для оставшихся ~19 admin handlers (calendars/events/admins/me/audit/refresh/stats/by_id/node_metrics/verification).
Расширение unit на все admin handlers
Полный
rebar3 eunit: 803 tests, 0 failures.Добавлены eunit для ранее непокрытых handlers (тот же
eh_test_support, без domain-моков):Итого
admin_handler_*_tests: 33 модуля (+admin_ws_handler_tests).Коммит и CI
docker/UnitTests.Dockerfile→docker run eventhub-unit-tests(перед API CT).[skip ci](без прогона Actions на этот push).После следующего обычного пуша без skip eunit станет gate в job
test.Итог
eh_test_support, admin handlers, core_admin/user и др.).rebar3 eunit: 803 tests, 0 failures.ApiTests.Dockerfile/eventhub-tests, два шага (eunit + CT).4fa8027(с[skip ci]).Закрываю задачу.