This commit is contained in:
Your Name
2026-08-27 14:23:23 +08:00
parent b5b14516a1
commit 2fa8492c56
27 changed files with 3832 additions and 1435 deletions
+76
View File
@@ -288,6 +288,82 @@ def test_shell_ai_entry_always_opens_patient_picker_even_with_current_selection(
assert shell_window.stack.currentWidget() is current
def test_shell_global_diagnosis_entry_reuses_dialog_and_obeys_permissions(
shell_window: ShellWindow,
monkeypatch: pytest.MonkeyPatch,
) -> None:
opened: list[tuple[str, int]] = []
refresh_callbacks: list[Any] = []
created: list[Any] = []
class _SavedSignal:
def connect(self, callback: Any) -> None:
refresh_callbacks.append(callback)
class _DiagnosisDialogDouble:
def __init__(
self,
repository: Any,
parent: Any,
*,
permissions: Any,
) -> None:
self.repository = repository
self.parent = parent
self.permissions = permissions
self.saved = _SavedSignal()
self.raise_count = 0
self.activate_count = 0
created.append(self)
def refresh_permissions(self, permissions: Any) -> None:
self.permissions = permissions
def open_for(
self,
diagnosis_id: int,
*,
editable: bool,
modeless: bool,
) -> None:
assert editable is True
assert modeless is True
opened.append(("edit", diagnosis_id))
def open_view_only(self, diagnosis_id: int, *, modeless: bool) -> None:
assert modeless is True
opened.append(("view", diagnosis_id))
def raise_(self) -> None:
self.raise_count += 1
def activateWindow(self) -> None: # noqa: N802 - Qt-compatible test double
self.activate_count += 1
monkeypatch.setattr(shell_module, "DiagnosisDialog", _DiagnosisDialogDouble)
shell_window._global_diagnosis_dialog = None
shell_window.permissions = {"tcm.diagnosis/edit"}
assert shell_window.open_diagnosis_by_id(501, modeless=True) is created[0]
shell_window.permissions = {"tcm.diagnosis/readonlyDetail"}
assert shell_window.open_diagnosis_by_id("502", modeless=True) is created[0]
shell_window.permissions = {"tcm.diagnosis/*"}
assert shell_window.open_diagnosis_by_id(503, modeless=True) is created[0]
assert opened == [("edit", 501), ("view", 502), ("edit", 503)]
assert len(created) == 1
assert created[0].parent is shell_window
assert len(refresh_callbacks) == 1
assert created[0].raise_count == 3
assert created[0].activate_count == 3
shell_window.permissions = set()
assert shell_window.open_diagnosis_by_id(504, modeless=True) is None
assert shell_window.open_diagnosis_by_id(0, modeless=True) is None
assert shell_window.open_diagnosis_by_id("invalid", modeless=True) is None
assert opened == [("edit", 501), ("view", 502), ("edit", 503)]
def test_shell_ai_entry_without_selection_opens_patient_diagnosis_picker(
application: QApplication,
shell_window: ShellWindow,