"""Tests for the jobs page route."""

from pathlib import Path
from uuid import uuid4

import pytest

from transcription.models import JobStatus


@pytest.mark.integration
class TestPageRendering:
    """Verify jobs routes render correctly with real app wiring."""

    def test_jobs_page_renders_empty_state(self, app_client):
        """GET /ui/jobs renders the page and empty-state text when no jobs exist."""
        _, client = app_client
        response = client.get("/ui/jobs")

        assert response.status_code == 200
        assert "Transcription Jobs" in response.text
        assert "No jobs yet." in response.text

    def test_jobs_page_lists_seeded_jobs(self, app_client, seed_job):
        """GET /ui/jobs lists seeded jobs from the in-memory database."""
        _, client = app_client
        seed_job(filename="sample.pdf", status=JobStatus.TRANSCRIBED, transcript_text="done")

        response = client.get("/ui/jobs")

        assert response.status_code == 200
        assert "sample.pdf" in response.text
        assert "transcribed" in response.text

    def test_job_detail_page_renders_seeded_job(self, app_client, seed_job):
        """GET /ui/jobs/{job_id} renders detail content for a real seeded job."""
        _, client = app_client
        fixture_path = Path(__file__).resolve().parents[1] / "fixtures" / "images" / "valid" / "single_page_pdf.pdf"
        job_id = seed_job(
            filename="detail.pdf",
            status=JobStatus.TRANSCRIBED,
            transcript_revisions=[
                (0, None, "first attempt failed"),
                (1, "hello", None),
            ],
            source_file=fixture_path,
        )

        response = client.get(f"/ui/jobs/{job_id}")

        assert response.status_code == 200
        assert "Job Detail" in response.text
        assert "Job overview" in response.text
        assert "detail.pdf" in response.text
        assert "Transcripts" in response.text
        assert "Revision" in response.text
        assert "first attempt failed" in response.text
        assert "hello" in response.text
        assert "Document preview" in response.text
        assert "/uploads/detail.pdf" in response.text

    def test_job_detail_page_rejects_invalid_id(self, app_client):
        """GET /ui/jobs/{job_id} shows validation feedback for malformed IDs."""
        _, client = app_client
        response = client.get("/ui/jobs/not-a-uuid")

        assert response.status_code == 200
        assert "Invalid job id" in response.text

    def test_job_detail_page_handles_missing_job(self, app_client):
        """GET /ui/jobs/{job_id} shows not-found state for unknown IDs."""
        _, client = app_client
        missing_id = uuid4()
        response = client.get(f"/ui/jobs/{missing_id}")

        assert response.status_code == 200
        assert "Job not found" in response.text
