Skip to content

Commit 0b2da0d

Browse files
committed
Add unit-test regression test
system tests don't count for coverage
1 parent 068ff66 commit 0b2da0d

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

‎tests/unit_tests/service/test_interface.py‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,33 @@ def test_begin_task_no_task_id(worker_mock: MagicMock):
242242
worker_mock.assert_not_called()
243243

244244

245+
@patch("blueapi.service.interface.from_uri")
246+
@patch("blueapi.service.interface.config")
247+
@patch("blueapi.service.interface.context")
248+
@patch("blueapi.service.interface.worker")
249+
def test_subscribers_removed_when_task_not_found(
250+
worker_mock: MagicMock,
251+
context_mock: MagicMock,
252+
config_mock: MagicMock,
253+
from_uri_mock: MagicMock,
254+
):
255+
# regression test for #1480
256+
worker = worker_mock()
257+
ctx = context_mock()
258+
worker.begin_task.side_effect = KeyError()
259+
260+
with pytest.raises(KeyError):
261+
interface.begin_task(WorkerTask(task_id="missing"))
262+
263+
ctx.run_engine.subscribe.assert_called_once()
264+
tiled_token = ctx.run_engine.subscribe()
265+
ctx.run_engine.unsubscribe.assert_called_once_with(tiled_token)
266+
267+
worker.worker_events.subscribe.assert_called_once()
268+
remove_token = worker.worker_events.subscribe()
269+
worker.worker_events.unsubscribe.assert_called_once_with(remove_token)
270+
271+
245272
@patch("blueapi.service.interface.TaskWorker.get_tasks_by_status")
246273
def test_get_tasks_by_status(get_tasks_by_status_mock: MagicMock):
247274
pending_task1 = TrackableTask(task_id="0", task=Task(name="pending_task1"))

0 commit comments

Comments
 (0)