[test][infra] Хвост #244: coverage-gate + тест атомарности acceptInvitation + decideTurnEnd #324

Open
opened 2026-07-04 05:43:46 +03:00 by agent_vscode · 0 comments
Collaborator

Вынесено из #244 при его закрытии. Основной объём #244 реализован и смержен в develop (Part A data-loss — PR #248; Part B Phase 2 tail — PR #257/#263; Phase 4 контракты; бóльшая часть Phase 3; DB-харнесс из ~13 *.int-spec.ts; sendNow). Здесь — только реально не сделанный остаток, чтобы долг не потерялся.

Что осталось

1. Coverage-gate инфраструктура (основной пункт)

На develop нет ни @vitest/coverage-v8, ни istanbul-конфига, ни порога покрытия — coverage-gate отсутствует полностью.

  • Подключить @vitest/coverage-v8 или починить istanbul на ESM-импорте @docmost/editor-ext.
  • Задать порог покрытия (threshold) в конфиге vitest.
  • DoD: pnpm test считает покрытие; заданный порог проваливает прогон при регрессе.

2. Атомарность acceptInvitation (Phase 3, единственный незакрытый пункт Фазы 3)

Метод apps/server/src/core/workspace/services/workspace-invitation.service.ts::acceptInvitation не покрыт ни одним тестом (spec/int-spec для invitation в дереве отсутствует). Остальные пункты Фазы 3 уже закрыты (getShareForPage, isSharingAllowed, getShareTree, lookupTransclusionForShare, AiSettingsService, environment.service — специи есть).

  • Добавить int-spec (DB-харнесс уже есть) на атомарность принятия инвайта: конкурентный/повторный accept не создаёт дубль membership и не оставляет полусостояния.

3. decideTurnEnd (embedded client, хвост Phase 2)

sendNow покрыт (apps/client/src/features/ai-chat/components/chat-thread.test.tsx), но decideTurnEnd — нет. Дописать юнит на решение о завершении хода (минорно).

Ссылки

  • Родитель: #244 (закрыт), исходные #204 (тест-стратегия) и #206 (data-loss).
  • Смерженные части: PR #248, #257, #263.
> Вынесено из #244 при его закрытии. Основной объём #244 реализован и смержен в `develop` (Part A data-loss — PR #248; Part B Phase 2 tail — PR #257/#263; Phase 4 контракты; бóльшая часть Phase 3; DB-харнесс из ~13 `*.int-spec.ts`; sendNow). Здесь — только реально не сделанный остаток, чтобы долг не потерялся. ## Что осталось ### 1. Coverage-gate инфраструктура (основной пункт) На `develop` **нет** ни `@vitest/coverage-v8`, ни istanbul-конфига, ни порога покрытия — coverage-gate отсутствует полностью. - Подключить `@vitest/coverage-v8` **или** починить istanbul на ESM-импорте `@docmost/editor-ext`. - Задать порог покрытия (threshold) в конфиге vitest. - **DoD:** `pnpm test` считает покрытие; заданный порог проваливает прогон при регрессе. ### 2. Атомарность `acceptInvitation` (Phase 3, единственный незакрытый пункт Фазы 3) Метод `apps/server/src/core/workspace/services/workspace-invitation.service.ts::acceptInvitation` **не покрыт ни одним тестом** (spec/int-spec для invitation в дереве отсутствует). Остальные пункты Фазы 3 уже закрыты (`getShareForPage`, `isSharingAllowed`, `getShareTree`, `lookupTransclusionForShare`, `AiSettingsService`, `environment.service` — специи есть). - Добавить int-spec (DB-харнесс уже есть) на атомарность принятия инвайта: конкурентный/повторный accept не создаёт дубль membership и не оставляет полусостояния. ### 3. `decideTurnEnd` (embedded client, хвост Phase 2) `sendNow` покрыт (`apps/client/src/features/ai-chat/components/chat-thread.test.tsx`), но `decideTurnEnd` — нет. Дописать юнит на решение о завершении хода (минорно). ## Ссылки - Родитель: #244 (закрыт), исходные #204 (тест-стратегия) и #206 (data-loss). - Смерженные части: PR #248, #257, #263.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#324