test: isolate HTTP suites from scheduler and bank-card case order (WealthLedger/backend#65) #100

Merged
codex-bot merged 1 commits from test/65-isolate-http-suites into develop 2026-10-15 11:50:48 +03:00
Owner

Closes #65

Что изменено

  • 10 HTTP suites (app, bank-cards, bonds, stocks, all-accounts, tbank-connection, tbank-income-local, tbank-ledger-local, tbank-local-reads, tbank-read-baseline) переопределяют TbankHourlyScheduler заглушкой { tick: jest.fn() }, как уже делали upcoming-events, value-history, portfolio-structure. Минутный setInterval больше не запускает hourly walk в середине тестов. Ни один из этих suites не обращается к scheduler напрямую.
  • bank-cards: два кейса (renames default category, enforces actual FK) сами создают карту, чтобы засеять дефолтные категории; кейс preserves history ... across app restart сам переименовывает дефолтную категорию в «Остальное», а не полагается на предыдущий кейс.

Проверки

  • Каждый из 23 кейсов bank-cards запущен изолированно на свежей disposable SQLite-БД: до правок 3 падали (зависимость от порядка), после правок 23/23 зелёные.
  • bank-cards и tbank-local-reads отдельными прогонами: зелёные.
  • npm run verify: 40 suites, 268 tests, lint, typecheck, сборка - зелёные.
  • npm run test:e2e: 20/20 SQLite suites зелёные.

Ограничения

  • Изоляция по времени (minute boundary) доказана отключением таймера, а не измерением частоты флейков: частота не измерялась.
  • Полный отказ от общего состояния между кейсами (отдельная БД на каждый it) в scope issue не входит.
Closes #65 ## Что изменено - 10 HTTP suites (`app`, `bank-cards`, `bonds`, `stocks`, `all-accounts`, `tbank-connection`, `tbank-income-local`, `tbank-ledger-local`, `tbank-local-reads`, `tbank-read-baseline`) переопределяют `TbankHourlyScheduler` заглушкой `{ tick: jest.fn() }`, как уже делали `upcoming-events`, `value-history`, `portfolio-structure`. Минутный `setInterval` больше не запускает hourly walk в середине тестов. Ни один из этих suites не обращается к scheduler напрямую. - `bank-cards`: два кейса (`renames default category`, `enforces actual FK`) сами создают карту, чтобы засеять дефолтные категории; кейс `preserves history ... across app restart` сам переименовывает дефолтную категорию в «Остальное», а не полагается на предыдущий кейс. ## Проверки - Каждый из 23 кейсов `bank-cards` запущен изолированно на свежей disposable SQLite-БД: до правок 3 падали (зависимость от порядка), после правок 23/23 зелёные. - `bank-cards` и `tbank-local-reads` отдельными прогонами: зелёные. - `npm run verify`: 40 suites, 268 tests, lint, typecheck, сборка - зелёные. - `npm run test:e2e`: 20/20 SQLite suites зелёные. ## Ограничения - Изоляция по времени (minute boundary) доказана отключением таймера, а не измерением частоты флейков: частота не измерялась. - Полный отказ от общего состояния между кейсами (отдельная БД на каждый `it`) в scope issue не входит.
ksv741 force-pushed test/65-isolate-http-suites from 90a060a211 to 2c7362c3dd 2026-10-15 10:47:36 +03:00 Compare
ksv741 added 1 commit 2026-10-15 11:25:00 +03:00
test: isolate HTTP suites from scheduler and bank-card case order (WealthLedger/backend#65)
Backend verify / commits (pull_request) Successful in 36s
Backend verify / security (pull_request) Successful in 11s
Backend verify / verify (pull_request) Successful in 5m16s
3a9e3d5dc2
ksv741 force-pushed test/65-isolate-http-suites from 174a6c727e to 3a9e3d5dc2 2026-10-15 11:25:00 +03:00 Compare
codex-bot merged commit 9e4f9d9cab into develop 2026-10-15 11:50:48 +03:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/backend#100