You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix(billing): v8.1 post-merge hardening
F1: wrap syncOrganizationPlan in try/catch in handleInvoicePaymentSucceeded —
DB blip no longer dead-letters handler; emits billing.organization.sync_failed
F2: prepend '~' to synthetic event IDs in bumpEventMarkers — same-second lex
tiebreaker now sorts synthetic bumps after Stripe evt_* IDs
F3: validatePlan warns on unrecognized non-empty planId before returning null
F4: add 'unpaid' to RECONCILE_STATUSES so reconciler covers unpaid subs
F5: add V8-C2b — canceled subscription in meter mode must be fail-closed
* fix(billing): include error stacks + cover syncOrganizationPlan failure path
Add stack: err?.stack to both logger.error calls in the syncOrganizationPlan
catch block to match the convention used throughout billing.webhook.service.js.
Add unit test covering the dunning recovery setPlan failure path: asserts
non-fatal behaviour, logger.error call, and billing.organization.sync_failed emit.
* test(billing): cover evtErr inner catch + validatePlan warn branch for codecov/patch
Add two more unit tests to close remaining uncovered lines in the V8.1 patch:
- sync_failed listener throws: asserts inner evtErr catch is non-fatal and logs correctly
- validatePlan warns on unrecognized non-empty planId (e.g. Stripe product ID)
0 commit comments