From e90fd52e479550d87dcb6047770324d665862041 Mon Sep 17 00:00:00 2001 From: David Perl Date: Fri, 31 Jul 2026 12:09:07 +0200 Subject: [PATCH] test: add test for dispatch against each plugin --- tests/unit/utils/test_beamline_dispatch.py | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tests/unit/utils/test_beamline_dispatch.py diff --git a/tests/unit/utils/test_beamline_dispatch.py b/tests/unit/utils/test_beamline_dispatch.py new file mode 100644 index 00000000..17336a56 --- /dev/null +++ b/tests/unit/utils/test_beamline_dispatch.py @@ -0,0 +1,48 @@ +import importlib +from unittest.mock import patch + +import pytest + +from aare.beamline_dispatch.beamline_dispatch import get_beamline_dispatch +from aare.beamline_dispatch.simulated import SimulatedDispatch +from aare.beamline_dispatch.x06da.beamline_dispatch import X06daDispatch +from aare.beamline_dispatch.x06sa import X06saDispatch +from aare.beamline_dispatch.x10sa import X10saDispatch + + +def test_dispatch_cannot_be_instantiated_without_env(): + with patch.dict("os.environ", {}, clear=True): + with pytest.raises(ValueError) as e: + _ = get_beamline_dispatch() + assert e.match("Please set the BEAMLINE environment variable") + + +def test_simulated_dispatch_can_be_instantiated(): + with patch.dict("os.environ", {"BEAMLINE": "SIMULATED"}): + dispatch = get_beamline_dispatch() + assert isinstance(dispatch, SimulatedDispatch) + + +@pytest.mark.skipif(importlib.util.find_spec("pxi_bec") is None, reason="run only for pxi flavour") +def test_pxi_dispatch_can_be_instantiated(): + with patch.dict("os.environ", {"BEAMLINE": "X06SA"}): + dispatch = get_beamline_dispatch() + assert isinstance(dispatch, X06saDispatch) + + +@pytest.mark.skipif( + importlib.util.find_spec("pxii_bec") is None, reason="run only for pxii flavour" +) +def test_pxii_dispatch_can_be_instantiated(): + with patch.dict("os.environ", {"BEAMLINE": "X10SA"}): + dispatch = get_beamline_dispatch() + assert isinstance(dispatch, X10saDispatch) + + +@pytest.mark.skipif( + importlib.util.find_spec("pxiii_bec") is None, reason="run only for pxiii flavour" +) +def test_pxiii_dispatch_can_be_instantiated(): + with patch.dict("os.environ", {"BEAMLINE": "X06DA"}): + dispatch = get_beamline_dispatch() + assert isinstance(dispatch, X06daDispatch)