BillTracker/tests
null 1238ac5b14 feat(demo): full "take it for a ride" seed + surgical, correct removal
The demo seeder created bills + categories only, so nearly every page
rendered empty; clear-demo had a data-loss bug and error-protection gaps.

Seed now populates every user-facing surface: bills with autopay states,
3-6 months of payment history (with drift + debt paydown), monthly
skips/overrides/snoozes/notes, a demo bank source + accounts + matched/
unmatched/subscription transactions, categorised spending + budgets +
rules, planning income/starting-amounts, category groups, an active
snowball plan (+ extra-payment), merchant rules, and a calendar feed —
so a new user can explore Tracker (incl. overdue/drift), Analytics,
Summary, Spending, Snowball, Payoff, Transactions, Matches, Subscriptions,
Banking and Calendar with realistic data.

Correct removal (the emphasis):
- Migration v1.07 adds an is_seeded marker to the 12 user-scoped,
  non-cascading demo tables (bill-children cascade with their seeded bill).
- clearSeededDemoData() (new, in userDataService alongside eraseUserData)
  removes ONLY seeded rows in one transaction, child->parent, and keeps a
  seeded category if a user's own bill still references it.
- Fixes the category collision: seed marks ONLY categories it creates, so
  clear no longer deletes the user's default categories / uncategorises
  their real bills.

Error protection: idempotency guard on seeded (not all) bills -> 409
instead of a fake "created 0"; whole seed wrapped in one transaction
(atomic); rate-limit + audit + standardizeError on all three routes;
seeded-status reports payments/transactions counts; dead --force removed.
Client copy/counts corrected.

Verified: typecheck/check clean; server suite 232/232 (+6 new); client
typecheck/lint/build clean; e2e probe 17/17; on a COPY of the real prod
DB the v1.07 migration applies (integrity ok) and a seed->clear round-trip
on the data-rich user restores their real data byte-for-byte with no
orphans.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 13:06:47 -05:00
..
amountSuggestionService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
analyticsService.test.js refactor(server): migrate 10 services to TypeScript (.cts) 2026-07-06 10:35:29 -05:00
authService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
backupAndCleanup.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
bankSyncService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
billMerchantRuleService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
billReorder.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
billsDeletedRoute.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
billsService.test.js refactor(server): migrate billsService + notificationService to TypeScript (.cts) 2026-07-06 11:12:06 -05:00
calendarFeedService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
categoryGroups.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
categoryReorder.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
csvTransactionImportService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
encryptionService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
eraseUserData.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
exportImportRoundTrip.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
exportRicher.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
migrationModules.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
money.test.js feat(server-ts): migrate the money boundary to TypeScript on Node's native runtime (Phase 2) 2026-07-05 13:44:04 -05:00
notificationDelivery.test.js refactor(server): migrate billsService + notificationService to TypeScript (.cts) 2026-07-06 11:12:06 -05:00
notificationLeadTime.test.js refactor(server): migrate billsService + notificationService to TypeScript (.cts) 2026-07-06 11:12:06 -05:00
ofxImportService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
paymentAccountingService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
paymentValidation.test.js feat(server-ts): paymentValidation → .cts, proving the CJS-module path (Phase 2) 2026-07-05 13:51:37 -05:00
paymentsQuickRoute.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
paymentsRoute.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
profileRoute.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
reconciliation.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
safeToSpend.test.js refactor(server): migrate trackerService to TypeScript (.cts) 2026-07-06 11:16:14 -05:00
seedDemoData.test.js feat(demo): full "take it for a ride" seed + surgical, correct removal 2026-07-06 13:06:47 -05:00
snowballMath.test.js refactor(server): migrate 6 mid-tier services to TypeScript (.cts) 2026-07-06 10:54:10 -05:00
snowballPlanRoute.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
spendingService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
spendingSummary.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
statusService.test.js refactor(server): migrate 10 services to TypeScript (.cts) 2026-07-06 10:35:29 -05:00
subscriptionService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
summaryBankTracking.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
summarySkipOverride.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
totpService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
trackerService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
transactionMatchService.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
transactionMatchState.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00
updateCheckOptOut.test.js refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) 2026-07-06 11:34:08 -05:00