"""Unloaded confirmation is separate from reset and model failures stay visible.""" from types import SimpleNamespace import pytest from PySide6.QtWidgets import QMessageBox from orisys_studio.app_window import StudioMainWindow from orisys_studio.ui.toolbar import ToolbarWidget @pytest.mark.parametrize("confirmed", [False, True]) def test_unloaded_zero_requires_operator_confirmation(monkeypatch, confirmed): requested = [] messages = [] host = SimpleNamespace( _session_phase="running", _active_worker=SimpleNamespace(request_calibration_zero=lambda: requested.append(True)), statusBar=lambda: SimpleNamespace(showMessage=messages.append)) monkeypatch.setattr(QMessageBox, "question", lambda *args: QMessageBox.StandardButton.Yes if confirmed else QMessageBox.StandardButton.No) StudioMainWindow._on_calibration_zero(host) assert bool(requested) == confirmed def test_model_status_and_zero_control_are_cleared_on_playback(qt_app): toolbar = ToolbarWidget() toolbar.set_reset_enabled(True) toolbar.set_model_calibration_status({"fn": "zero_unavailable"}) assert not toolbar.btn_calibration_zero.isHidden() assert "FN" in toolbar.model_state.text() assert toolbar.btn_calibration_zero.isEnabled() toolbar.set_run_role("playback") assert toolbar.btn_calibration_zero.isHidden() assert toolbar.model_state.isHidden() toolbar.close()