17 lines
763 B
Python
17 lines
763 B
Python
from central.app.ai.budget_ledger import BudgetLedger, BudgetLimits
|
|
|
|
|
|
def test_budget_rejects_before_provider_when_daily_limit_is_exceeded():
|
|
ledger = BudgetLedger(BudgetLimits(max_run_cost_usd=2.0, max_daily_cost_usd=1.0))
|
|
assert ledger.check_and_reserve("r1", "t1", 0.75, 1, 0).allowed is True
|
|
decision = ledger.check_and_reserve("r2", "t1", 0.30, 1, 0)
|
|
|
|
assert decision.allowed is False
|
|
assert decision.reason == "AI_BUDGET_EXHAUSTED"
|
|
|
|
|
|
def test_budget_allows_exact_limit_and_counts_new_products():
|
|
ledger = BudgetLedger(BudgetLimits(max_run_cost_usd=1.0, max_new_products_per_run=2))
|
|
assert ledger.check_and_reserve("r1", "t1", 1.0, 1, 2).allowed is True
|
|
assert ledger.check_and_reserve("r1", "t1", 0.0, 0, 1).allowed is False
|