This commit is contained in:
Your Name
2026-09-07 12:30:42 +08:00
parent d5164b7369
commit 9ef6eb8d67
369 changed files with 11733 additions and 0 deletions
+140
View File
@@ -0,0 +1,140 @@
from __future__ import annotations
import os
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
import pytest
from PySide6.QtCore import QDate, QPoint, Qt
from PySide6.QtTest import QTest
from PySide6.QtWidgets import QApplication
from doctor_workstation.core import PermissionSet
from doctor_workstation.ui.pages import reception as reception_module
from doctor_workstation.ui.pages.reception import ReceptionPage
from doctor_workstation.ui.theme import apply_theme
@pytest.fixture(scope="module")
def application():
app = QApplication.instance() or QApplication([])
apply_theme(app)
return app
def settle(application):
for _ in range(8):
application.processEvents()
@pytest.fixture
def page(application, monkeypatch):
monkeypatch.setattr(reception_module, "run_async", lambda *_args, **_kwargs: None)
widget = ReceptionPage(object(), PermissionSet(["*"]))
widget.resize(1280, 800)
widget.show()
widget.poll_timer.stop()
widget.detail_stack.setCurrentIndex(1)
settle(application)
yield widget
widget.close()
widget.deleteLater()
settle(application)
def test_default_fold_reclaims_queue_space_and_keeps_clinical_workspace(page, application):
assert not page.filter_disclosure.expanded
assert page.filter_disclosure.button.text() == "展开筛选"
assert page.refresh_button.isVisible()
assert page.queue_filter_summary.isVisible()
assert not page.queue_filter_panel.isVisible()
assert not page.queue_date_button.isVisible()
assert not page.search_edit.isVisible()
assert all(not button.isVisible() for button in page._queue_filter_buttons.values())
assert page.detail_tabs.isVisible()
assert page.patient_name_label.isVisible()
assert page.clinical_info_group.isVisible()
clinical_geometry = page.detail_stack.geometry()
collapsed_height = page.queue_stack.height()
QTest.mouseClick(page.filter_disclosure.button, Qt.MouseButton.LeftButton)
settle(application)
assert page.filter_disclosure.expanded
assert page.filter_disclosure.button.text() == "收起筛选"
assert page.queue_date_button.isVisible()
assert page.search_edit.isVisible()
assert all(button.isVisible() for button in page._queue_filter_buttons.values())
assert collapsed_height - page.queue_stack.height() >= 64
assert page.detail_stack.geometry() == clinical_geometry
def test_toggle_keeps_queries_patient_draft_loaded_pages_and_resize_state(page, application, monkeypatch):
requests = []
monkeypatch.setattr(page, "_request_queue_page", lambda query, **options: requests.append((query, options)))
page.filter_disclosure.set_expanded(True)
page.queue_date_button._pick_date(QDate(2026, 8, 3))
page._queue_filter_buttons[None].click()
page.search_edit.setText(" 折叠测试患者 ")
QTest.keyClick(page.search_edit, Qt.Key.Key_Return)
assert requests[-1][0]["patient_name"] == "折叠测试患者"
assert requests[-1][0]["status"] is None
assert requests[-1][0]["start_date"] == requests[-1][0]["end_date"] == "2026-08-03"
assert page.queue_filter_summary.text() == "2026-08-03 · 全部状态 · 姓名已筛选"
assert "折叠测试患者" in page.queue_filter_summary.toolTip()
page._selected_appointment_id = 51
page._queue_records = [{"id": index} for index in range(1, 31)]
page._queue_page = 2
page._queue_total = 40
page.note_edit.setPlainText("尚未保存的接诊备注")
page.detail_tabs.setCurrentIndex(4)
query_snapshot = dict(page._queue_query)
request_count = len(requests)
loading = page._queue_loading
for expanded in (False, True, False):
page.filter_disclosure.set_expanded(expanded)
page.resize(816 if expanded else 1280, 800)
settle(application)
assert page.filter_disclosure.expanded is expanded
assert page.queue_filter_panel.isVisible() is expanded
assert len(requests) == request_count
assert page._selected_appointment_id == 51
assert page._queue_page == 2
assert len(page._queue_records) == 30
assert page._queue_loading is loading
assert page._queue_query == query_snapshot
assert page.search_edit.text() == " 折叠测试患者 "
assert page.note_edit.toPlainText() == "尚未保存的接诊备注"
assert page.detail_tabs.currentIndex() == 4
page.refresh(workspace_refresh=True)
assert not page.filter_disclosure.expanded
assert requests[-1][0]["patient_name"] == "折叠测试患者"
assert requests[-1][0]["status"] is None
assert requests[-1][0]["start_date"] == "2026-08-03"
assert requests[-1][0]["page_size"] == 30
assert page._selected_appointment_id == 51
@pytest.mark.parametrize("width", [816, 1280])
def test_expanded_queue_controls_fit_at_supported_page_widths(page, application, width):
page.filter_disclosure.set_expanded(True)
page.resize(width, 800)
page._update_queue_filter_counts({"extend": {"status_count": {"1": 23, "2": 11, "3": 42}}}, [])
settle(application)
panel = page.queue_panel
controls = [
page.refresh_button,
page.filter_disclosure.button,
page.queue_date_button,
page.search_edit,
*page._queue_filter_buttons.values(),
]
for widget in controls:
position = widget.mapTo(panel, QPoint())
assert position.x() >= 0
assert position.x() + widget.width() <= panel.width()
assert widget.width() >= widget.minimumSizeHint().width()
assert page.queue_date_button.geometry().right() < page.search_edit.geometry().left()
assert page.filter_disclosure.button.height() == page.search_edit.height() == 32