generated from john/python-template
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""Tests for deterministic V4.5 transcription warnings."""
|
|
|
|
import pytest
|
|
|
|
from transcription.services.quality import QualityWarningCode
|
|
from transcription.services.quality import analyze_transcription_quality
|
|
from transcription.services.quality import quality_warning_payload
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_quality_analysis_reports_each_v45_warning_without_mutating_text():
|
|
text = (
|
|
"[document body handwritten]\n"
|
|
"[document body typewritten]\n"
|
|
"[handwritten: first line]\n"
|
|
"[handwritten: second line]\n"
|
|
"Damaged \ufffd text &"
|
|
)
|
|
|
|
warnings = analyze_transcription_quality(text)
|
|
|
|
assert [warning.code for warning in warnings] == [
|
|
QualityWarningCode.REPLACEMENT_CHARACTER,
|
|
QualityWarningCode.MULTIPLE_BODY_MARKERS,
|
|
QualityWarningCode.REDUNDANT_HANDWRITING_WRAPPERS,
|
|
QualityWarningCode.UNRESOLVED_HTML_ENTITY,
|
|
]
|
|
assert text.endswith("&")
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_quality_analysis_accepts_clean_transcription():
|
|
assert analyze_transcription_quality("[document body typewritten]\nClean text.") == ()
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_quality_warning_payload_is_versioned():
|
|
payload = quality_warning_payload(
|
|
analyze_transcription_quality("[document body typeset]\nBroken \ufffd")
|
|
)
|
|
|
|
assert payload["schema_name"] == "transcription.quality-warnings"
|
|
assert payload["schema_version"] == "1"
|
|
assert payload["warnings"][0]["code"] == "replacement_character"
|