Skip to content

Commit 77632b9

Browse files
test(billing): cover extras debit unexpectedly-not-applied logger.error branch
Add test for the `debitResult.applied === false && reason !== 'duplicate_step'` path in incrementMeter to bring patch coverage to 100% on new code.
1 parent a2251e8 commit 77632b9

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

modules/billing/tests/billing.usage.service.unit.tests.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,26 @@ describe('BillingUsageService — meter extensions unit tests:', () => {
275275
expect(mockExtraService.debit).not.toHaveBeenCalled();
276276
});
277277

278+
test('debit applied=false with unexpected reason → logs error, continues', async () => {
279+
const loggerMod = await import('../../../lib/services/logger.js');
280+
const mockLoggerError = loggerMod.default.error;
281+
mockSubscriptionRepository.findPlan.mockResolvedValue({ plan: 'pro' });
282+
mockPlanService.getActivePlan.mockReturnValue(makePlan({ meterQuota: 500000 }));
283+
const updatedDoc = makeUsageDoc({ meterUsed: 510000, meterQuota: 500000 });
284+
mockUsageRepository.incrementMeter.mockResolvedValue(updatedDoc);
285+
// applied=false with reason that is NOT 'duplicate_step' — unexpected, should log error
286+
mockExtraService.debit.mockResolvedValue({ applied: false, reason: 'insufficient_balance' });
287+
288+
const result = await BillingUsageService.incrementMeter(orgId, 50000, {}, 'hist_debit_unexpected_skip');
289+
290+
expect(result.applied).toBe(true);
291+
expect(result.extrasConsumed).toBe(10000);
292+
expect(mockLoggerError).toHaveBeenCalledWith(
293+
'[billing.usage] extras debit unexpectedly not applied',
294+
expect.objectContaining({ organizationId: orgId, reason: 'insufficient_balance' }),
295+
);
296+
});
297+
278298
test('debit failure is non-fatal — logs warning and still returns applied=true', async () => {
279299
const loggerMod = await import('../../../lib/services/logger.js');
280300
const mockLoggerWarn = loggerMod.default.warn;

0 commit comments

Comments
 (0)