generated from john/python-template
55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
"""Tests for transcription.ui.upload_page."""
|
|
|
|
from pathlib import Path
|
|
from uuid import uuid4
|
|
|
|
import pytest
|
|
|
|
from transcription.services.upload import UploadError
|
|
from transcription.services.upload import UploadJobResult
|
|
from transcription.ui import upload_page
|
|
|
|
|
|
@pytest.mark.unit
|
|
class TestUploadPageBehavior:
|
|
"""Verify upload page helper and submission behavior."""
|
|
|
|
def test_accepted_upload_types_contains_supported_extensions(self):
|
|
"""accepted_upload_types includes all MVP-supported upload extensions."""
|
|
accepted = upload_page.accepted_upload_types()
|
|
assert ".jpg" in accepted
|
|
assert ".jpeg" in accepted
|
|
assert ".png" in accepted
|
|
assert ".tif" in accepted
|
|
assert ".tiff" in accepted
|
|
assert ".pdf" in accepted
|
|
|
|
def test_submit_upload_calls_upload_service(self, monkeypatch):
|
|
"""submit_upload delegates file persistence and job creation to upload service."""
|
|
expected = UploadJobResult(
|
|
document_id=uuid4(),
|
|
job_id=uuid4(),
|
|
stored_path=Path("uploads/mock.jpg"),
|
|
original_filename="mock.jpg",
|
|
)
|
|
|
|
def fake_create_upload_job(*, filename: str, file_bytes: bytes):
|
|
assert filename == "mock.jpg"
|
|
assert file_bytes == b"bytes"
|
|
return expected
|
|
|
|
monkeypatch.setattr(upload_page, "create_upload_job", fake_create_upload_job)
|
|
|
|
result = upload_page.submit_upload(filename="mock.jpg", file_bytes=b"bytes")
|
|
assert result == expected
|
|
|
|
def test_submit_upload_surfaces_upload_error(self, monkeypatch):
|
|
"""submit_upload raises UploadError for invalid upload payloads."""
|
|
def fake_create_upload_job(*, filename: str, file_bytes: bytes):
|
|
raise UploadError("invalid payload")
|
|
|
|
monkeypatch.setattr(upload_page, "create_upload_job", fake_create_upload_job)
|
|
|
|
with pytest.raises(UploadError):
|
|
upload_page.submit_upload(filename="bad.jpg", file_bytes=b"")
|