@@ -39,17 +39,22 @@ def restart(self):
3939 return FakeState
4040
4141
42- def test_state_manager_fetches_states (dm_with_devices ):
42+ def test_state_manager_fetches_states (dm_with_devices , fake_bl_states ):
4343 """
4444 Test that the BeamlineStateManager fetches all available beamline states on initialization.
4545 """
4646
4747 connector = mock .MagicMock ()
4848 state_manager = BeamlineStateManager (connector , device_manager = dm_with_devices )
49- connector .register .assert_called_once_with (
50- MessageEndpoints .available_beamline_states (),
51- cb = state_manager ._handle_state_update ,
52- from_start = True ,
49+ connector .register .assert_has_calls (
50+ [
51+ mock .call (
52+ MessageEndpoints .available_beamline_states (),
53+ cb = state_manager ._handle_state_update ,
54+ from_start = True ,
55+ ),
56+ mock .call (MessageEndpoints .device_config_update (), cb = state_manager .restart_all ),
57+ ]
5358 )
5459
5560
@@ -125,3 +130,17 @@ def test_state_manager_updates_states(state_manager, connected_connector, fake_b
125130
126131 assert len (state_manager ._states ) == 1
127132 assert "State2" in state_manager ._states
133+
134+
135+ @pytest .mark .timeout (5 )
136+ def test_states_restarted_when_device_config_updated (
137+ state_manager , connected_connector , fake_bl_states
138+ ):
139+ state_mock = mock .MagicMock ()
140+ state_manager ._states ["test" ] = state_mock
141+ connected_connector .send (
142+ MessageEndpoints .device_config_update (), messages .DeviceConfigMessage (action = "reload" )
143+ )
144+
145+ while state_mock .restart .call_count == 0 :
146+ time .sleep (0.1 )
0 commit comments