更新
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user