"""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"