@@ -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