generated from john/python-template
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
"""Tests for the upload page route."""
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
from transcription.app import create_app
|
|
from transcription.config import Settings
|
|
from transcription.config import _settings
|
|
|
|
|
|
@pytest.fixture
|
|
def client(tmp_path: Path):
|
|
"""Provide a real app client backed by in-memory SQLite."""
|
|
settings = Settings(
|
|
openrouter_api_key="test-key",
|
|
database_url="sqlite:///:memory:",
|
|
environment="test",
|
|
upload_dir=tmp_path / "uploads",
|
|
prompt_dir=tmp_path / "prompts",
|
|
)
|
|
_settings.set(settings)
|
|
|
|
app = create_app()
|
|
with TestClient(app) as test_client:
|
|
yield test_client
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestPageRendering:
|
|
"""Verify the upload page is available and includes the main controls."""
|
|
|
|
def test_root_redirects_to_ui(self, client):
|
|
"""GET / redirects to the UI mount point."""
|
|
response = client.get("/", follow_redirects=False)
|
|
|
|
assert response.status_code == 307
|
|
assert response.headers["location"] == "/ui"
|
|
|
|
def test_ui_redirects_to_upload(self, client):
|
|
"""GET /ui redirects to the upload page."""
|
|
response = client.get("/ui", follow_redirects=False)
|
|
|
|
assert response.status_code == 307
|
|
assert response.headers["location"] == "/ui/upload"
|
|
|
|
def test_upload_page_renders_expected_controls(self, client):
|
|
"""GET /ui/upload returns the page shell and upload controls."""
|
|
response = client.get("/ui/upload")
|
|
|
|
assert response.status_code == 200
|
|
assert "Upload Document" in response.text
|
|
assert "Select document file" in response.text
|
|
assert "View jobs" in response.text
|