generated from john/python-template
model used being carried thru
This commit is contained in:
+77
-16
@@ -5,7 +5,10 @@ from uuid import UUID
|
||||
import pytest
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from transcription.models import Document, Job, JobStatus, Transcript
|
||||
from transcription.models import Document
|
||||
from transcription.models import Job
|
||||
from transcription.models import JobStatus
|
||||
from transcription.models import Transcript
|
||||
|
||||
|
||||
def _make_document(**overrides) -> Document:
|
||||
@@ -113,7 +116,14 @@ class TestTranscriptModel:
|
||||
"""A Transcript with text set and error_detail None persists correctly."""
|
||||
doc = _persist_document(session)
|
||||
job = _persist_job(session, doc)
|
||||
transcript = Transcript(job_id=job.id, text="Dear Sir, ...")
|
||||
transcript = Transcript(
|
||||
job_id=job.id,
|
||||
revision=0,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
text="Dear Sir, ...",
|
||||
)
|
||||
session.add(transcript)
|
||||
session.commit()
|
||||
session.refresh(transcript)
|
||||
@@ -127,7 +137,14 @@ class TestTranscriptModel:
|
||||
"""A Transcript with text None and error_detail set persists correctly."""
|
||||
doc = _persist_document(session)
|
||||
job = _persist_job(session, doc)
|
||||
transcript = Transcript(job_id=job.id, error_detail="Provider timeout")
|
||||
transcript = Transcript(
|
||||
job_id=job.id,
|
||||
revision=0,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
error_detail="Provider timeout",
|
||||
)
|
||||
session.add(transcript)
|
||||
session.commit()
|
||||
session.refresh(transcript)
|
||||
@@ -137,19 +154,46 @@ class TestTranscriptModel:
|
||||
assert fetched.text is None
|
||||
assert fetched.error_detail == "Provider timeout"
|
||||
|
||||
def test_job_id_is_unique(self, session):
|
||||
"""Inserting two transcripts with the same job_id raises an integrity error."""
|
||||
def test_job_revision_pair_is_unique(self, session):
|
||||
"""Duplicate job_id and revision combinations raise an integrity error."""
|
||||
doc = _persist_document(session)
|
||||
job = _persist_job(session, doc)
|
||||
|
||||
t1 = Transcript(job_id=job.id, text="First")
|
||||
session.add(t1)
|
||||
session.add(
|
||||
Transcript(
|
||||
job_id=job.id,
|
||||
revision=0,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
text="First",
|
||||
)
|
||||
)
|
||||
session.add(
|
||||
Transcript(
|
||||
job_id=job.id,
|
||||
revision=1,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
text="Second",
|
||||
)
|
||||
)
|
||||
session.commit()
|
||||
|
||||
t2 = Transcript(job_id=job.id, text="Duplicate")
|
||||
session.add(t2)
|
||||
session.add(
|
||||
Transcript(
|
||||
job_id=job.id,
|
||||
revision=1,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
text="Duplicate",
|
||||
)
|
||||
)
|
||||
with pytest.raises(IntegrityError):
|
||||
session.commit()
|
||||
session.rollback()
|
||||
|
||||
|
||||
class TestRelationships:
|
||||
@@ -165,15 +209,32 @@ class TestRelationships:
|
||||
assert len(doc.jobs) == 2
|
||||
assert all(isinstance(j, Job) for j in doc.jobs)
|
||||
|
||||
def test_job_exposes_transcript(self, session):
|
||||
"""job.transcript returns the linked Transcript."""
|
||||
def test_job_exposes_transcripts(self, session):
|
||||
"""job.transcripts returns linked Transcript history."""
|
||||
doc = _persist_document(session)
|
||||
job = _persist_job(session, doc)
|
||||
transcript = Transcript(job_id=job.id, text="Transcribed text")
|
||||
session.add(transcript)
|
||||
session.add(
|
||||
Transcript(
|
||||
job_id=job.id,
|
||||
revision=0,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
text="Transcribed text",
|
||||
)
|
||||
)
|
||||
session.add(
|
||||
Transcript(
|
||||
job_id=job.id,
|
||||
revision=1,
|
||||
provider="openrouter",
|
||||
model="google/gemini-2.5-flash",
|
||||
prompt_name="transcribe_document.md",
|
||||
text="Transcribed text v2",
|
||||
)
|
||||
)
|
||||
session.commit()
|
||||
|
||||
session.refresh(job)
|
||||
assert job.transcript is not None
|
||||
assert isinstance(job.transcript, Transcript)
|
||||
assert job.transcript.text == "Transcribed text"
|
||||
assert len(job.transcripts) == 2
|
||||
assert all(isinstance(t, Transcript) for t in job.transcripts)
|
||||
|
||||
Reference in New Issue
Block a user