mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-13 08:15:21 +02:00
* feat: use mps generated correlation ID * chore: update pipecat submodule * feat: add credit purchase URL * feat: carve out billing page and show credit ledger * feat: deprecate dograh based quota tracking * fix: remove cost calculation from dograh codebase * fix: create mps account on migrate to v2 * chore: update pipecat
99 lines
2.9 KiB
Python
99 lines
2.9 KiB
Python
from types import SimpleNamespace
|
|
from unittest.mock import AsyncMock
|
|
|
|
import pytest
|
|
|
|
from api.routes import organization_usage
|
|
|
|
|
|
def test_is_mps_billing_v2_depends_only_on_account_mode():
|
|
assert organization_usage._is_mps_billing_v2({"billing_mode": "v2"}) is True
|
|
assert organization_usage._is_mps_billing_v2({"billing_mode": "v1"}) is False
|
|
assert organization_usage._is_mps_billing_v2({"billing_mode": "shadow"}) is False
|
|
assert organization_usage._is_mps_billing_v2(None) is False
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_mps_billing_account_status_uses_user_provider_id(monkeypatch):
|
|
get_status = AsyncMock(return_value={"billing_mode": "v2"})
|
|
monkeypatch.setattr(
|
|
organization_usage.mps_service_key_client,
|
|
"get_billing_account_status",
|
|
get_status,
|
|
)
|
|
|
|
user = SimpleNamespace(provider_id="provider-123")
|
|
|
|
assert await organization_usage._get_mps_billing_account_status(user, 42) == {
|
|
"billing_mode": "v2"
|
|
}
|
|
get_status.assert_awaited_once_with(
|
|
organization_id=42,
|
|
created_by="provider-123",
|
|
)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_billing_credits_pages_v2_ledger(monkeypatch):
|
|
monkeypatch.setattr(organization_usage, "DEPLOYMENT_MODE", "saas")
|
|
monkeypatch.setattr(
|
|
organization_usage,
|
|
"_get_mps_billing_account_status",
|
|
AsyncMock(return_value={"billing_mode": "v2"}),
|
|
)
|
|
get_ledger = AsyncMock(
|
|
return_value={
|
|
"account": {
|
|
"id": 7,
|
|
"organization_id": 42,
|
|
"billing_mode": "v2",
|
|
"cached_balance_credits": 250,
|
|
"currency": "USD",
|
|
},
|
|
"ledger_entries": [
|
|
{
|
|
"id": 99,
|
|
"entry_type": "grant",
|
|
"origin": "account_creation",
|
|
"credits_delta": 250,
|
|
"balance_after": 250,
|
|
"created_at": "2026-06-12T00:00:00Z",
|
|
}
|
|
],
|
|
"total_debits_credits": 75,
|
|
"total_count": 101,
|
|
"page": 3,
|
|
"limit": 25,
|
|
"total_pages": 5,
|
|
}
|
|
)
|
|
monkeypatch.setattr(
|
|
organization_usage.mps_service_key_client,
|
|
"get_credit_ledger",
|
|
get_ledger,
|
|
)
|
|
|
|
user = SimpleNamespace(
|
|
provider_id="provider-123",
|
|
selected_organization_id=42,
|
|
)
|
|
|
|
response = await organization_usage.get_billing_credits(
|
|
page=3,
|
|
limit=25,
|
|
user=user,
|
|
)
|
|
|
|
get_ledger.assert_awaited_once_with(
|
|
organization_id=42,
|
|
page=3,
|
|
limit=25,
|
|
created_by="provider-123",
|
|
)
|
|
assert response.billing_version == "v2"
|
|
assert response.total_credits_used == 75
|
|
assert response.total_count == 101
|
|
assert response.page == 3
|
|
assert response.limit == 25
|
|
assert response.total_pages == 5
|
|
assert response.ledger_entries[0].id == 99
|