Skip to content

Commit cacf258

Browse files
committed
Add client plan return tests
1 parent 5f49928 commit cacf258

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

tests/unit_tests/client/test_client.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
MissingInstrumentSessionError,
1818
Plan,
1919
PlanCache,
20+
PlanFailedError,
2021
)
2122
from blueapi.client.event_bus import AnyEvent, EventBusClient
2223
from blueapi.client.rest import BlueapiRestClient, BlueskyRemoteControlError
@@ -512,6 +513,39 @@ def callback(on_event: Callable[[AnyEvent, MessageContext], None]):
512513
mock_on_event.assert_called_once_with(COMPLETE_EVENT)
513514

514515

516+
def test_scripting_interface_returns_result():
517+
client = Mock(spec=BlueapiClient, instrument_session="cm12345-1")
518+
client.run_task.return_value = TaskStatus(
519+
task_id="foobar",
520+
task_complete=True,
521+
task_failed=False,
522+
result=TaskResult(result=42, type="int"),
523+
)
524+
demo_plan = Plan(
525+
"demo",
526+
client=client,
527+
model=PlanModel(name="demo", description="Demo plan", schema={}),
528+
)
529+
assert demo_plan() == 42
530+
531+
532+
def test_scripting_interface_raises_exceptions():
533+
client = Mock(spec=BlueapiClient, instrument_session="cm12345-1")
534+
client.run_task.return_value = TaskStatus(
535+
task_id="foobar",
536+
task_complete=True,
537+
task_failed=True,
538+
result=TaskError(type="ValueError", message="Plan failed"),
539+
)
540+
demo_plan = Plan(
541+
"demo",
542+
client=client,
543+
model=PlanModel(name="demo", description="Demo plan", schema={}),
544+
)
545+
with pytest.raises(PlanFailedError, match="Plan failed"):
546+
demo_plan()
547+
548+
515549
def test_oidc_config_property(client, mock_rest):
516550
assert client.oidc_config == mock_rest.get_oidc_config()
517551

0 commit comments

Comments
 (0)