Files
AareDAQ/tests/unit/gui/test_threads_logic.py

48 lines
1.8 KiB
Python

import pytest
from unittest.mock import MagicMock
from aare.gui.scan_logic.sample_mount_logic import SampleMountLogic
from aare.common.models import DAQStatusModel, SampleShortInfo, DewarAddress
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)