更新
This commit is contained in:
@@ -250,6 +250,69 @@ def test_list_batches_visible_ids_and_stops_on_hide(application: QApplication, i
|
||||
assert repository.calls == calls
|
||||
|
||||
|
||||
def test_blank_list_row_has_no_ai_display_or_entry_points(application: QApplication, immediate: None, monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
repository = Repository()
|
||||
opened = []
|
||||
monkeypatch.setattr(page_module, "present_issued_prescription_ai", lambda *args, **kwargs: opened.append(kwargs))
|
||||
page = page_module.PrescriptionsPage(repository, ["*"])
|
||||
page.resize(1366, 800)
|
||||
page.show()
|
||||
application.processEvents()
|
||||
# Demo row 801 contains herbs; row 802 is an empty manual prescription.
|
||||
assert all(call[1] == [801] for call in repository.calls if call[0] == "statuses")
|
||||
assert not page.table.isColumnHidden(11) and not page.table.isColumnHidden(12)
|
||||
page._ai_statuses[802] = batch(prescription_id=802)
|
||||
page._render_ai_statuses()
|
||||
for column in (11, 12):
|
||||
item = page.table.item(1, column)
|
||||
assert item.text() == item.toolTip() == item.data(Qt.ItemDataRole.AccessibleTextRole) == ""
|
||||
assert not any(button.accessibleName() == "AI 报告" for button in page.table.cellWidget(1, 2).findChildren(QPushButton))
|
||||
page.table.selectRow(1)
|
||||
assert page.ai_report_button.isHidden() and not page.ai_report_button.isEnabled()
|
||||
page._open_ai_report()
|
||||
page.table.itemClicked.emit(page.table.item(1, 11))
|
||||
page.table.itemClicked.emit(page.table.item(1, 12))
|
||||
page._open_ai_context_menu(page.table.visualItemRect(page.table.item(1, 1)).center())
|
||||
assert not hasattr(page, "_ai_context_menu")
|
||||
assert opened == []
|
||||
page.table.selectRow(0)
|
||||
assert page.ai_report_button.isVisible() and page.ai_report_button.isEnabled()
|
||||
page.ai_report_button.click()
|
||||
assert opened == [{"prescription_id": 801}]
|
||||
page.close()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("blank_fields", [
|
||||
{"is_system_auto": "1", "herbs": []},
|
||||
{"is_system_auto": True, "herbs": [{"name": "黄芪"}]},
|
||||
{"is_system_auto": 0, "herbs": [{}, {"name": " "}]},
|
||||
{"is_system_auto": 0, "herbs": None},
|
||||
])
|
||||
def test_all_blank_list_hides_ai_until_prescription_is_saved(application: QApplication, immediate: None, monkeypatch: pytest.MonkeyPatch, blank_fields: dict[str, Any]) -> None:
|
||||
repository = Repository()
|
||||
row = {"id": 803, "sn": "RX-BLANK", "patient_name": "测试患者", **blank_fields}
|
||||
monkeypatch.setattr(repository, "list_prescriptions", lambda **_filters: {"lists": [row], "count": 1})
|
||||
page = page_module.PrescriptionsPage(repository, ["*"])
|
||||
page.resize(1366, 800)
|
||||
page.show()
|
||||
application.processEvents()
|
||||
assert page.table.isColumnHidden(11) and page.table.isColumnHidden(12)
|
||||
assert page.ai_report_button.isHidden() and page.ai_status_notice.isHidden()
|
||||
assert not page._ai_timer.isActive()
|
||||
assert not any(call[0] == "statuses" for call in repository.calls)
|
||||
assert not any(button.accessibleName() == "AI 报告" for button in page.table.cellWidget(0, 2).findChildren(QPushButton))
|
||||
|
||||
row.update(is_system_auto=0, herbs=[{"name": "黄芪", "dosage": 12}])
|
||||
page.refresh()
|
||||
application.processEvents()
|
||||
assert ("statuses", [803]) in repository.calls
|
||||
assert not page.table.isColumnHidden(11) and not page.table.isColumnHidden(12)
|
||||
assert page.ai_report_button.isVisible() and page.ai_status_notice.isVisible()
|
||||
assert "千问 0%" in page.table.item(0, 12).text()
|
||||
assert any(button.accessibleName() == "AI 报告" for button in page.table.cellWidget(0, 2).findChildren(QPushButton))
|
||||
page.close()
|
||||
|
||||
|
||||
def test_list_disabled_explains_availability_and_keeps_history(application: QApplication, immediate: None) -> None:
|
||||
repository = Repository()
|
||||
repository.enabled = False
|
||||
@@ -447,8 +510,9 @@ def test_context_menu_targets_clicked_prescription(application: QApplication, im
|
||||
page.resize(1366, 800)
|
||||
page.show()
|
||||
application.processEvents()
|
||||
item = page.table.item(1, 1)
|
||||
expected_id = page.table.item(1, 0).data(Qt.ItemDataRole.UserRole).id
|
||||
page.table.selectRow(1)
|
||||
item = page.table.item(0, 1)
|
||||
expected_id = page.table.item(0, 0).data(Qt.ItemDataRole.UserRole).id
|
||||
page._open_ai_context_menu(page.table.visualItemRect(item).center())
|
||||
page._ai_context_menu.actions()[0].trigger()
|
||||
assert opened == [{"prescription_id": expected_id}]
|
||||
|
||||
Reference in New Issue
Block a user