From 2e4538ad30e18e440c5b7b2a3fd85a32674e75bf Mon Sep 17 00:00:00 2001 From: Callum Forrester Date: Tue, 15 Jul 2025 12:51:19 +0000 Subject: [PATCH] Create failing test for enumeate nested devices in plan schemas --- tests/unit_tests/core/test_context.py | 29 +++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/core/test_context.py b/tests/unit_tests/core/test_context.py index 58031178a..7dafa7a81 100644 --- a/tests/unit_tests/core/test_context.py +++ b/tests/unit_tests/core/test_context.py @@ -20,6 +20,7 @@ from dodal.common import PlanGenerator, inject from ophyd_async.core import ( StandardDetector, + StandardReadable, StaticPathProvider, UUIDFilenameProvider, init_devices, @@ -126,15 +127,35 @@ def sim_detector(tmp_path: Path) -> StandardDetector: return sim_det +class SimStage(StandardReadable): + def __init__(self, name: str = "") -> None: + with self.add_children_as_readables(): + self.x = Motor("BAZ:") + self.y = Motor("BLARG:") + super().__init__(name) + + +@pytest.fixture +def sim_stage(RE: RunEngine) -> SimStage: + with init_devices(mock=True): + sim_stage = SimStage() + return sim_stage + + @pytest.fixture def empty_context() -> BlueskyContext: return BlueskyContext() @pytest.fixture -def devicey_context(sim_motor: Motor, sim_detector: StandardDetector) -> BlueskyContext: +def devicey_context( + sim_motor: Motor, + sim_stage: SimStage, + sim_detector: StandardDetector, +) -> BlueskyContext: ctx = BlueskyContext() ctx.register_device(sim_motor) + ctx.register_device(sim_stage) ctx.register_device(sim_detector) return ctx @@ -168,7 +189,11 @@ def demo_plan(foo: int, mov: Movable) -> MsgGenerator: schema = devicey_context.plans["demo_plan"].model.model_json_schema() assert schema["properties"] == { "foo": {"title": "Foo", "type": "integer"}, - "mov": {"title": "Mov", "type": "bluesky.protocols.Movable", "enum": ["sim"]}, + "mov": { + "title": "Mov", + "type": "bluesky.protocols.Movable", + "enum": ["sim", "sim_stage.x", "sim_stage.y"], + }, }