UI update complete?

This commit is contained in:
Jim Lancaster
2026-08-02 13:33:09 -05:00
parent ed6f9dfe25
commit 9653060c2a
26 changed files with 2523 additions and 72 deletions
+63
View File
@@ -1,10 +1,13 @@
"""Tests for the jobs page route."""
import asyncio
from pathlib import Path
from uuid import uuid4
import pytest
from transcription.db import session_scope
from transcription.db.models import Document
from transcription.db.models import JobStatus
@@ -18,8 +21,39 @@ class TestPageRendering:
response = client.get("/ui/jobs")
assert response.status_code == 200
assert "Create job" in response.text
assert "No jobs yet." in response.text
def test_job_create_page_requires_existing_documents(self, app_client):
"""GET /ui/jobs/new shows guidance when no Documents exist."""
_, client = app_client
response = client.get("/ui/jobs/new")
assert response.status_code == 200
assert "Create job" in response.text
assert "No documents available. Create a Document before creating a Job." in response.text
def test_job_create_page_lists_available_documents(self, app_client):
"""GET /ui/jobs/new renders document choices when Documents exist."""
_, client = app_client
async def _seed_document() -> None:
async with session_scope() as session:
session.add(Document(name="Seeded Document"))
await session.commit()
asyncio.run(_seed_document())
response = client.get("/ui/jobs/new")
assert response.status_code == 200
assert "Create job" in response.text
assert "Seeded Document" in response.text
assert "Files are processed alphabetically by original filename." in response.text
assert "No files uploaded yet." in response.text
assert "Upload folder" 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
@@ -54,6 +88,14 @@ class TestPageRendering:
assert "original text" in response.text
assert "Document preview" in response.text
assert "/uploads/detail.pdf" in response.text
assert "Provider:" in response.text
assert "Model:" in response.text
assert "Prompt:" in response.text
assert "Retry count:" in response.text
assert "Last updated:" in response.text
assert "Delete job" in response.text
assert "Delete source" in response.text
assert "This permanently deletes the source from this job context." 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."""
@@ -105,3 +147,24 @@ class TestPageRendering:
assert "Revision Editor" in response.text
assert "Update revision" in response.text
assert "hello" in response.text
def test_job_delete_page_shows_confirmation_when_not_processing(self, app_client, seed_job):
_, client = app_client
job_id = seed_job(filename="delete-ready.pdf", status=JobStatus.TRANSCRIBED)
response = client.get(f"/ui/jobs/{job_id}/delete")
assert response.status_code == 200
assert "Delete job" in response.text
assert "This action permanently deletes the job." in response.text
assert "Delete job permanently" in response.text
def test_job_delete_page_shows_blocked_state_when_processing(self, app_client, seed_job):
_, client = app_client
job_id = seed_job(filename="delete-blocked.pdf", status=JobStatus.PROCESSING)
response = client.get(f"/ui/jobs/{job_id}/delete")
assert response.status_code == 200
assert "Delete is blocked while the job is processing." in response.text
assert "Wait for processing to complete, then retry delete." in response.text