test: await portfolio publication done instead of polling ticks (WealthLedger/backend#63) #103

Merged
codex-bot merged 1 commits from test/63-portfolio-catalog-rollback into develop 2026-10-15 15:40:04 +03:00
Owner

Refs #63

Что изменено

  • portfolio.service.spec: два теста ждали публикацию циклом из до 10 immediate()-тиков и затем читали publish.mock.calls[0], что без публикации давало неочевидный undefined. Теперь service.request возвращает handle, и тест делает await handle.done. Заодно удалён неиспользуемый импорт immediate.

Что проверено

  • Мутант: без await handle.done тест падает (1 failed). Значит ожидание реально нужно и проверяется.
  • verify: 40 suites, 268 tests, зелёные.
  • test:e2e: 21/21 зелёные при повторном прогоне.

Наблюдение (не исправлено)

  • В первом полном прогоне portfolio-structure.e2e-spec упал в beforeEach (PUT tbank-connection -> 401), в повторном прогоне и при отдельном запуске (2 раза) прошёл. Причина не установлена: в логе нет деталей 401. Флейк, не систематический; отдельный риск для стабильности e2e, требует отдельного разбора (токен подписывается при загрузке модуля через process.env.JWT_SECRET).

Пункты #63, которые этим PR НЕ закрываются

  • catalog: конкурирующий producer удалён в #62, оставшиеся pump(N) в tbank-hourly-lifecycle - вне scope (hourly), не переписывались.
  • Rollback fault после первой Portfolio write: без test-only seam (spy или инъекция) в существующих моках не воспроизводится; в проекте нет прецедента spy на делегаты транзакции. Нужно решение владельца.
  • operations-sync: ~14 delay, каждый требует разбора (см. PR #102).
  • Доказательство claimed-fence в publish: нужна инъекция падения между шагами репозитория.

Поэтому PR не использует Closes.

Refs #63 ## Что изменено - `portfolio.service.spec`: два теста ждали публикацию циклом из до 10 `immediate()`-тиков и затем читали `publish.mock.calls[0]`, что без публикации давало неочевидный `undefined`. Теперь `service.request` возвращает handle, и тест делает `await handle.done`. Заодно удалён неиспользуемый импорт `immediate`. ## Что проверено - Мутант: без `await handle.done` тест падает (1 failed). Значит ожидание реально нужно и проверяется. - `verify`: 40 suites, 268 tests, зелёные. - `test:e2e`: 21/21 зелёные при повторном прогоне. ## Наблюдение (не исправлено) - В первом полном прогоне `portfolio-structure.e2e-spec` упал в `beforeEach` (PUT tbank-connection -> 401), в повторном прогоне и при отдельном запуске (2 раза) прошёл. Причина не установлена: в логе нет деталей 401. Флейк, не систематический; отдельный риск для стабильности e2e, требует отдельного разбора (токен подписывается при загрузке модуля через process.env.JWT_SECRET). ## Пункты #63, которые этим PR НЕ закрываются - `catalog`: конкурирующий producer удалён в #62, оставшиеся `pump(N)` в `tbank-hourly-lifecycle` - вне scope (hourly), не переписывались. - Rollback fault после первой Portfolio write: без test-only seam (spy или инъекция) в существующих моках не воспроизводится; в проекте нет прецедента spy на делегаты транзакции. Нужно решение владельца. - `operations-sync`: ~14 `delay`, каждый требует разбора (см. PR #102). - Доказательство `claimed`-fence в `publish`: нужна инъекция падения между шагами репозитория. Поэтому PR не использует `Closes`.
codex-bot added 1 commit 2026-10-15 15:09:36 +03:00
test: await portfolio publication done instead of polling ticks (WealthLedger/backend#63)
Backend verify / commits (pull_request) Successful in 35s
Backend verify / security (pull_request) Successful in 13s
Backend verify / verify (pull_request) Successful in 5m41s
b7cf097abd
codex-bot merged commit 702302126b into develop 2026-10-15 15:40:04 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#103