This commit is contained in:
Your Name
2026-08-14 14:37:30 +08:00
parent 21790e35f4
commit 18c15d1262
117 changed files with 28157 additions and 8080 deletions
+63 -13
View File
@@ -9,10 +9,12 @@ os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
import pytest
from PySide6.QtCore import QDate, Signal
from PySide6.QtWidgets import (
QApplication,
QDialog,
QInputDialog,
QMessageBox,
QApplication,
QDialog,
QDialogButtonBox,
QInputDialog,
QLabel,
QMessageBox,
QToolButton,
QWidget,
)
@@ -20,9 +22,14 @@ from PySide6.QtWidgets import (
from doctor_workstation.core import PermissionSet
from doctor_workstation.ui.dialogs import diagnosis as diagnosis_module
from doctor_workstation.ui.pages import consultations as consultations_module
from doctor_workstation.ui.pages.consultations import (
ConsultationsPage,
_video_payload,
from doctor_workstation.ui.pages.consultations import (
ConsultationsPage,
_AppointmentLogDialog,
_DiagnosisCreateDialog,
_DiagnosisOrderDialog,
_DiagnosisOrderQrDialog,
_QrResultDialog,
_video_payload,
appointment_rows,
is_diagnosis_confirmed,
is_valid_id_card,
@@ -81,7 +88,7 @@ def immediate_async(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(diagnosis_module, "run_async", run_immediately)
def _row(**changes: Any) -> dict[str, Any]:
def _row(**changes: Any) -> dict[str, Any]:
row = {
"id": 501,
"diagnosis_id": 501,
@@ -105,8 +112,50 @@ def _row(**changes: Any) -> dict[str, Any]:
"DiagnosisViewRecord": [{"is_confirmed": 1}],
"has_prescription": 0,
}
row.update(changes)
return row
row.update(changes)
return row
def test_consultation_business_dialogs_expose_shared_visual_contract(
application: QApplication,
) -> None:
record = _row(patient_name="鹿立核", patient_id=301)
dialogs = (
_DiagnosisCreateDialog(),
_DiagnosisOrderDialog(record),
_AppointmentLogDialog(record, []),
_QrResultDialog("视频二维码", record, "https://example.invalid/video.png"),
_DiagnosisOrderQrDialog(record, "ORDER-301"),
)
assert [dialog.objectName() for dialog in dialogs] == [
"DiagnosisCreateDialog",
"DiagnosisOrderDialog",
"AppointmentLogDialog",
"DiagnosisQrResultDialog",
"DiagnosisOrderQrDialog",
]
assert all(dialog.property("businessDialog") is True for dialog in dialogs)
assert all(
any(label.property("dialogRole") == "title" for label in dialog.findChildren(QLabel))
for dialog in dialogs
)
assert dialogs[0].findChild(QDialogButtonBox).button(
QDialogButtonBox.StandardButton.Save
).property("variant") == "primary"
assert dialogs[1].findChild(QDialogButtonBox).button(
QDialogButtonBox.StandardButton.Ok
).property("variant") == "primary"
assert next(
button
for button in dialogs[3].findChild(QDialogButtonBox).buttons()
if button.text() == "打开二维码"
).property("variant") == "primary"
assert dialogs[4].open_button.property("variant") == "primary"
for dialog in dialogs:
dialog.close()
application.processEvents()
def test_video_condition_never_uses_diagnosis_status_or_missed_status() -> None:
@@ -165,9 +214,10 @@ def test_default_query_matches_admin_today_and_page_size_contract(
assert len(calls) == 1
query = calls[0]
assert query["page_no"] == 1
assert query["page_size"] == 15
assert query["appointment_date"] == QDate.currentDate().toString("yyyy-MM-dd")
assert "status" not in query
assert query["page_size"] == 15
assert query["appointment_date"] == QDate.currentDate().toString("yyyy-MM-dd")
assert query["appointment_status"] == "1"
assert "status" not in query
assert query["has_appointment"] == ""
assert query["diagnosis_confirmed"] == ""
assert {