"""Diagnostic — trace exactly what the failing screen view returns."""
from datetime import timedelta

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

from apps.rims.grants.models import Application, GrantCall
from apps.rims.grants.services import ProgramOfficerDecision, submit_application


@pytest.mark.django_db
def test_diagnostic(client, applicant_user, institution, grants_manager_user):
    call = GrantCall.objects.create(
        title="diag", slug="diag-call",
        opens_at=timezone.now() - timedelta(days=1),
        closes_at=timezone.now() + timedelta(days=10),
        status=GrantCall.Status.PUBLISHED,
        programme_officer_screening_enabled=True,
    )
    app = Application.objects.create(call=call, applicant=applicant_user, institution=institution)
    submit_application(app)
    print(f"After submit: status={Application.objects.get(pk=app.pk).status}")
    print(f"After submit: eligibility_passed={Application.objects.get(pk=app.pk).eligibility_passed}")
    client.force_login(grants_manager_user)
    url = reverse("rims_grants:application_po_screen", kwargs={"pk": app.pk})
    resp = client.post(url, {"decision": ProgramOfficerDecision.ELIGIBLE_READY, "note": ""}, follow=True)
    print(f"Final URL: {resp.redirect_chain}")
    print(f"After PO advance: status={Application.objects.get(pk=app.pk).status}")
    msgs = list(resp.context["messages"]) if resp.context else []
    for m in msgs:
        print(f"MSG: [{m.level}] {m.message}")
