# retoor import json from tests.conftest import run_async from devplacepy.services.devii.interaction.broker import InteractionBroker from devplacepy.services.devii.interaction.controller import InteractionController def test_ui_prompt_dispatch(): async def wait_site(interaction_id, frame, timeout): return { "status": "submitted", "interaction_id": interaction_id, "values": {"env": "staging"}, } broker = InteractionBroker("main", wait_site=wait_site) controller = InteractionController(broker) raw = run_async( controller.dispatch( "ui_prompt", { "title": "Env?", "widgets": [ { "type": "choice", "name": "env", "label": "Env", "options": [ {"value": "staging", "label": "Staging"}, {"value": "prod", "label": "Prod"}, ], } ], }, ) ) data = json.loads(raw) assert data["status"] == "submitted" assert data["values"]["env"] == "staging" def test_ui_notify_on_site(): events = [] async def emit(payload): events.append(payload) broker = InteractionBroker("main", emit=emit) controller = InteractionController(broker) raw = run_async(controller.dispatch("ui_notify", {"text": "Working..."})) data = json.loads(raw) assert data["status"] == "ok" assert events and events[0]["type"] == "status"