Files
IPSExtractor/services/extraction/tests/test_usage_tracking.py
T

52 lines
1.6 KiB
Python

from domain.usage_tracking import record_api_usage
def test_record_api_usage_aggregates_summary_phases_and_details():
result = record_api_usage(
{},
phase="extract",
model="gpt-5.6-luna",
usage={
"prompt_tokens": 1_000,
"completion_tokens": 200,
"total_tokens": 1_200,
"prompt_tokens_details": {"cached_tokens": 100},
},
radicado="RAD-1",
filename="factura.pdf",
)
result = record_api_usage(
result,
phase="extract",
model="gpt-5.6-luna",
usage={"prompt_tokens": 500, "completion_tokens": 50},
radicado="RAD-2",
)
ledger = result["api_usage"]
assert ledger["summary"]["requests"] == 2
assert ledger["summary"]["prompt_tokens"] == 1_500
assert ledger["summary"]["completion_tokens"] == 250
assert ledger["summary"]["total_tokens"] == 1_750
assert ledger["summary"]["unpriced_requests"] == 0
assert ledger["phases"]["extract"]["requests"] == 2
assert ledger["details"][0]["filename"] == "factura.pdf"
assert ledger["details"][0]["pricing_known"] is True
def test_record_api_usage_marks_unknown_model_as_unpriced():
result = record_api_usage(
{},
phase="extract",
model="provider/model-without-price",
usage={"prompt_tokens": 100, "completion_tokens": 10},
)
assert result["api_usage"]["summary"]["unpriced_requests"] == 1
assert result["api_usage"]["details"][0]["pricing_known"] is False
def test_record_api_usage_ignores_missing_usage():
original = {"processed": 1}
assert record_api_usage(original, phase="extract", model="gpt-5.6-luna", usage=None) == original