78 lines
2.0 KiB
Python
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)
|