Files
AareDAQ/tests/unit/gui/test_threads_logic.py
2026-07-06 15:39:02 +02:00

78 lines
2.0 KiB
Python

from unittest.mock import MagicMock
from aarecommon.models.models import DAQStatusModel, DewarAddress, SampleShortInfo
from aare.gui.scan_logic.sample_mount_logic import SampleMountLogic
def test_sample_mount_logic_emits_on_change():
logic = SampleMountLogic()
mock_slot = MagicMock()
logic.sample_changed.connect(mock_slot)
sample1 = SampleShortInfo(
db_id=1,
puck_name="P1",
dewar_name="D1",
sample_name="S1",
run_number=1,
user="U1",
pin=1,
location=DewarAddress(segment="A", pos=1),
)
sample2 = SampleShortInfo(
db_id=2,
puck_name="P1",
dewar_name="D1",
sample_name="S2",
run_number=1,
user="U1",
pin=2,
location=DewarAddress(segment="A", pos=1),
)
status = MagicMock(spec=DAQStatusModel)
status.sample = sample1
# First update, should emit
logic.update_daq_status(status)
mock_slot.assert_called_once_with(sample1)
mock_slot.reset_mock()
# Second update same sample, should NOT emit
logic.update_daq_status(status)
mock_slot.assert_not_called()
# Third update different sample, should emit
status.sample = sample2
logic.update_daq_status(status)
mock_slot.assert_called_once_with(sample2)
def test_sample_mount_logic_none_to_sample():
logic = SampleMountLogic()
mock_slot = MagicMock()
logic.sample_changed.connect(mock_slot)
sample1 = SampleShortInfo(
db_id=1,
puck_name="P1",
dewar_name="D1",
sample_name="S1",
run_number=1,
user="U1",
pin=1,
location=DewarAddress(segment="A", pos=1),
)
status = MagicMock(spec=DAQStatusModel)
status.sample = None
logic.update_daq_status(status)
# Initial __sample is None, so if status.sample is also None, it won't emit
mock_slot.assert_not_called()
status.sample = sample1
logic.update_daq_status(status)
mock_slot.assert_called_once_with(sample1)