"""Phase 1.2 — collection dropdown population + empty-state (#19).

A submitter with at least one eligible collection sees a populated dropdown. A
submitter with none sees an explicit empty-state ("No collection available")
and the wizard cannot create a Document (collection stays required).
"""
from __future__ import annotations

import pytest
from django.test import Client
from django.urls import reverse

from apps.repository.documents.models import Collection, Document


@pytest.mark.django_db
def test_dropdown_populated_when_public_collection_exists(public_collection, submitter_user):
    client = Client()
    client.force_login(submitter_user)
    resp = client.get(reverse("repo_documents:submit"))
    assert resp.status_code == 200
    html = resp.content.decode()
    # The collection <option> is rendered; the empty-state copy is not.
    assert public_collection.name in html
    assert "No collection available" not in html


@pytest.mark.django_db
def test_empty_state_shown_when_no_eligible_collection(submitter_user):
    # No public/eligible collection exists at all → empty-state, not a blank select.
    assert not Collection.objects.exclude(
        visibility=Collection.Visibility.INTERNAL
    ).exists()
    client = Client()
    client.force_login(submitter_user)
    resp = client.get(reverse("repo_documents:submit"))
    assert resp.status_code == 200
    assert "No collection available" in resp.content.decode()


@pytest.mark.django_db
def test_submit_blocked_when_no_collection(submitter_user):
    from django.core.files.uploadedfile import SimpleUploadedFile

    client = Client()
    client.force_login(submitter_user)
    resp = client.post(
        reverse("repo_documents:submit"),
        data={
            "title": "Orphan submission",
            "abstract": "No collection exists for this submitter.",
            "document_type": Document.DocumentType.THESIS,
            "license_type": Document.License.CC_BY,
            "language": "en",
            "year": 2026,
            "collection": "",
            "authors_text": "Kato, Amina",
            "file": SimpleUploadedFile(
                "t.pdf",
                b"%PDF-1.4\n%\xe2\xe3\xcf\xd3\ntrailer<<>>\n%%EOF\n",
                content_type="application/pdf",
            ),
        },
    )
    assert resp.status_code == 200
    assert Document.objects.count() == 0
