V2 step 2 complete

This commit is contained in:
Jim Lancaster
2026-08-01 16:17:38 -05:00
parent c46d1bd0bc
commit 61cc8a200b
14 changed files with 227 additions and 160 deletions
+18 -12
View File
@@ -1,4 +1,4 @@
"""Tests for revision behavior in TranscriptionService."""
"""Tests for source revision behavior in TranscriptionService."""
from uuid import uuid4
@@ -6,6 +6,8 @@ import pytest
from transcription.db.models import Document
from transcription.db.models import Job
from transcription.db.models import JobSource
from transcription.db.models import JobSourceStatus
from transcription.db.models import JobStatus
from transcription.db.models import Source
from transcription.services.documents import DocumentService
@@ -15,7 +17,7 @@ from transcription.services.transcription import TranscriptionService
@pytest.mark.integration
class TestTranscriptionServiceRevisionUpsert:
"""Verify optional single-revision create/update semantics."""
"""Verify page-level source revision semantics."""
@pytest.mark.asyncio
async def test_upsert_revision_creates_new_revision(self, default_session_factory):
@@ -26,29 +28,31 @@ class TestTranscriptionServiceRevisionUpsert:
document = Document(id=uuid4(), name="revision-create")
await documents.create_document(document=document)
job = Job(document_id=document.id, status=JobStatus.TRANSCRIBED, text="Original text")
job = Job(document_id=document.id, status=JobStatus.TRANSCRIBED)
await jobs.create_job(job=job)
source = Source(
document_id=document.id,
job_id=job.id,
page_number=1,
upload_name="source.jpg",
filename="source.jpg",
file_path="uploads/source.jpg",
)
async with transcriptions._session_scope() as session:
session.add(source)
await session.flush()
session.add(JobSource(job_id=job.id, source_id=source.id, status=JobSourceStatus.PENDING))
await session.commit()
await session.refresh(source)
revision = await transcriptions.upsert_revision_for_source(source_id=source.id, text="User revision")
fetched = await transcriptions.read_revision_by_source(source.id)
assert revision.source_id == source.id
assert revision.text == "User revision"
assert revision.id == source.id
assert revision.revised_text == "User revision"
assert fetched is not None
assert fetched.id == revision.id
assert fetched.text == "User revision"
assert fetched.id == source.id
assert fetched.revised_text == "User revision"
@pytest.mark.asyncio
async def test_upsert_revision_updates_existing_single_revision(self, default_session_factory):
@@ -59,18 +63,20 @@ class TestTranscriptionServiceRevisionUpsert:
document = Document(id=uuid4(), name="revision-update")
await documents.create_document(document=document)
job = Job(document_id=document.id, status=JobStatus.TRANSCRIBED, text="Original text")
job = Job(document_id=document.id, status=JobStatus.TRANSCRIBED)
await jobs.create_job(job=job)
source = Source(
document_id=document.id,
job_id=job.id,
page_number=1,
upload_name="source.jpg",
filename="source.jpg",
file_path="uploads/source.jpg",
)
async with transcriptions._session_scope() as session:
session.add(source)
await session.flush()
session.add(JobSource(job_id=job.id, source_id=source.id, status=JobSourceStatus.PENDING))
await session.commit()
await session.refresh(source)
@@ -79,7 +85,7 @@ class TestTranscriptionServiceRevisionUpsert:
revisions = await transcriptions.list_revisions_by_job(job.id)
assert first.id == second.id
assert second.text == "Revision v2"
assert second.revised_text == "Revision v2"
assert len(revisions) == 1
assert revisions[0].id == first.id
assert revisions[0].text == "Revision v2"
assert revisions[0].revised_text == "Revision v2"