"""HTMX fragment: finance budget choices for a grant award."""

import uuid
from datetime import timedelta
from decimal import Decimal

import pytest
from django.urls import reverse
from django.utils import timezone

from apps.rims.finance.models import Budget
from apps.rims.grants.models import Application, GrantCall
from apps.rims.grants.services import award_application, shortlist_application, submit_application


@pytest.mark.django_db
def test_finance_budget_options_lists_budgets_for_award(
    client, grants_manager_user, applicant_user, institution
):
    call = GrantCall.objects.create(
        title="Opts test",
        slug=f"opts-{uuid.uuid4().hex[:10]}",
        opens_at=timezone.now() - timedelta(days=1),
        closes_at=timezone.now() + timedelta(days=30),
        status=GrantCall.Status.PUBLISHED,
    )
    app = Application.objects.create(call=call, applicant=applicant_user, institution=institution)
    submit_application(app)
    app = Application.objects.get(pk=app.pk)
    shortlist_application(app)
    award_application(app, Decimal("1000"), timezone.now().date() + timedelta(days=180), narrative="")
    award = app.award
    Budget.objects.create(award=award, name="Ops budget Alpha")

    client.force_login(grants_manager_user)
    url = reverse("rims_projects:finance_budget_options")
    resp = client.get(url, {"award": str(award.pk)})
    assert resp.status_code == 200
    assert b"Ops budget Alpha" in resp.content
    assert b'id_finance_budget' in resp.content
