from datetime import datetime, timezone
from uuid import uuid4

from src.domain.admin.repository import summarize_owned_workspace_billing


def test_summarize_owned_workspace_billing_uses_latest_paid_subscription_per_workspace():
    owner_id = uuid4()
    workspace_id = uuid4()

    rows = [
        (owner_id, workspace_id, "pro", "pro", "active", datetime(2026, 9, 4, tzinfo=timezone.utc)),
        (owner_id, workspace_id, "starter", "starter", "canceled", datetime(2026, 8, 1, tzinfo=timezone.utc)),
    ]

    summaries = summarize_owned_workspace_billing(rows)

    assert summaries[owner_id].is_paying_customer is True
    assert summaries[owner_id].subscribed_plans == ["pro"]


def test_summarize_owned_workspace_billing_skips_free_and_trial_only_for_paying_flag():
    owner_id = uuid4()
    paid_trial_workspace_id = uuid4()
    free_workspace_id = uuid4()

    rows = [
        (owner_id, paid_trial_workspace_id, "growth", "growth", "trialing", datetime(2026, 9, 4, tzinfo=timezone.utc)),
        (owner_id, free_workspace_id, "free", None, None, None),
    ]

    summaries = summarize_owned_workspace_billing(rows)

    assert summaries[owner_id].is_paying_customer is False
    assert summaries[owner_id].subscribed_plans == ["growth"]
