import types from unittest.mock import MagicMock from aare.common.models import SampleShortInfo from aare.common.exception_handler import LoopCenteringFailed from aare.daq.daq import AareDAQ def test_execute_loop_centering_rejects_invalid_sample(): daq = object.__new__(AareDAQ) daq._AareDAQ__set_state = MagicMock() daq._AareDAQ__devs = MagicMock() daq._AareDAQ__aare = MagicMock() daq._handle_operation_error = MagicMock() daq._create_loop_centering_service = MagicMock() result = daq._execute_loop_centering(None) assert result is False daq._create_loop_centering_service.assert_not_called() def test_execute_loop_centering_handles_service_failure(): daq = object.__new__(AareDAQ) daq._AareDAQ__set_state = MagicMock() daq._AareDAQ__devs = MagicMock() daq._AareDAQ__aare = MagicMock() daq._handle_operation_error = MagicMock() daq.save_screenshot_db = MagicMock() sample = SampleShortInfo( db_id=1, sample_name="S1", puck_name="P1", dewar_name="D1", run_number=1, user="p1", pin=1, location=None, ) service = MagicMock() service.run.return_value = types.SimpleNamespace( success=False, comment="failed", error=LoopCenteringFailed("failed"), ) daq._create_loop_centering_service = MagicMock(return_value=service) result = daq._execute_loop_centering(sample) assert result is False daq._handle_operation_error.assert_called_once() def test_execute_loop_centering_handles_service_success(): daq = object.__new__(AareDAQ) daq._AareDAQ__set_state = MagicMock() daq._AareDAQ__devs = MagicMock() daq._AareDAQ__aare = MagicMock() daq._handle_operation_error = MagicMock() daq.save_screenshot_db = MagicMock() sample = SampleShortInfo( db_id=1, sample_name="S1", puck_name="P1", dewar_name="D1", run_number=1, user="p1", pin=1, location=None, ) service = MagicMock() service.run.return_value = types.SimpleNamespace( success=True, comment=None, error=None, ) daq._create_loop_centering_service = MagicMock(return_value=service) result = daq._execute_loop_centering(sample) assert result is True daq.save_screenshot_db.assert_called_once()