@@ -165,6 +165,31 @@ describe('simulateBudgetFromRecords', () => {
165165 } )
166166 } )
167167
168+ it ( 'handles individual-scope weekly entitlements and per-user budgets independently' , ( ) => {
169+ const result = simulateBudgetFromRecords ( [
170+ createRecord ( { date : '2026-06-01' , username : 'mona' , quantity : 40 , aic_quantity : 40 , aic_gross_amount : 4 } ) ,
171+ createRecord ( { date : '2026-06-02' , username : 'mona' , quantity : 40 , aic_quantity : 40 , aic_gross_amount : 4 } ) ,
172+ createRecord ( { date : '2026-06-08' , username : 'mona' , quantity : 40 , aic_quantity : 40 , aic_gross_amount : 4 } ) ,
173+ createRecord ( { date : '2026-06-08' , username : 'octocat' , quantity : 20 , aic_quantity : 20 , aic_gross_amount : 2 } ) ,
174+ ] , { userBudgetUsd : 5 } , {
175+ reportPlanScope : 'individual' ,
176+ organizationEntitlementPool : 0 ,
177+ individualWeeklyEntitlements : 50 ,
178+ } )
179+
180+ expect ( result ) . toEqual ( {
181+ totalBill : 0 ,
182+ blockedUsers : 1 ,
183+ blockedRequests : 70 ,
184+ blockedEntitlementsAic : 80 ,
185+ budgetExhausted : false ,
186+ firstUserBlockedDate : '2026-06-02' ,
187+ enterpriseBlockedDate : null ,
188+ productBlockedDates : { } ,
189+ adjustedDailyNetCostByDate : [ ] ,
190+ } )
191+ } )
192+
168193 it ( 'does not count entitlements that later get consumed by other usage' , ( ) => {
169194 const result = simulateBudgetFromRecords ( [
170195 createRecord ( { username : 'mona' , quantity : 50 , aic_quantity : 50 , aic_gross_amount : 5 } ) ,
0 commit comments