Files
zyt/app/tests/test_transcript_text.py
2026-10-30 13:41:35 +08:00

59 lines
2.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from __future__ import annotations
import os
import socket
from concurrent.futures import ThreadPoolExecutor
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
import pytest
from PySide6.QtWidgets import QApplication, QDialog, QPlainTextEdit, QWidget
from doctor_workstation.core.transcript_text import simplified_transcript
from doctor_workstation.ui.dialogs.diagnosis import DiagnosisDialog
@pytest.mark.parametrize(
("source", "expected"),
[
("你會說老家話嗎?很會,很會。", "你会说老家话吗?很会,很会。"),
("沒有過敏,沒有吃藥。0.5 mg,不是 5 mg。", "没有过敏,没有吃药。0.5 mg,不是 5 mg。"),
("血壓 120/80 mmHg,血糖 2.00–30.00 mmol/L,HbA1c 6.5%。",
"血压 120/80 mmHg,血糖 2.00–30.00 mmol/L,HbA1c 6.5%。"),
("唔係,冇食藥,咩事?", "唔系,冇食药,咩事?"),
("患者:口乾。\n醫生:不?\n患者:不。", "患者:口干。\n医生:不?\n患者:不。"),
("简体,不! \n0.5 mg\tB12", "简体,不! \n0.5 mg\tB12"),
("", ""),
],
)
def test_script_conversion_is_offline_and_preserves_clinical_tokens(monkeypatch, source, expected):
def no_network(*args, **kwargs):
pytest.fail("Script conversion must use bundled dictionaries only")
monkeypatch.setattr(socket.socket, "connect", no_network)
# A fresh thread loads its own dictionaries, even when a prior test ran.
with ThreadPoolExecutor(max_workers=1) as pool:
assert pool.submit(simplified_transcript, source).result() == expected
assert simplified_transcript(expected) == expected
def test_historical_transcript_dialog_displays_simplified_without_changing_record(monkeypatch):
application = QApplication.instance() or QApplication([])
parent = QWidget()
record = {"transcript_text": "患者:你會說老家話嗎?\n患者:沒有吃藥,0.5 mg。"}
source = DiagnosisDialog._call_transcript_text(record)
displayed = []
def inspect(dialog):
displayed.append(dialog.findChild(QPlainTextEdit, "DiagnosisCallTranscriptText").toPlainText())
return 0
monkeypatch.setattr(QDialog, "exec", inspect)
try:
DiagnosisDialog._view_call_transcript(parent, 12, source)
assert displayed == ["患者:你会说老家话吗?\n患者:没有吃药,0.5 mg。"]
assert record["transcript_text"] == source
finally:
parent.close()
application.processEvents()