# retoor from devplacepy.services.devii.interaction.markdown import ( project_markdown, project_plain_menu, ) from devplacepy.services.devii.interaction.schema import validate_prompt_args def _request(): return validate_prompt_args( { "title": "Deploy to staging?", "description": "Ship the current build.", "widgets": [ { "type": "choice", "name": "env", "label": "Target environment", "default": "staging", "options": [ {"value": "production", "label": "Production"}, {"value": "staging", "label": "Staging"}, {"value": "dev", "label": "Development"}, ], }, { "type": "text", "name": "notes", "label": "Ship notes", "required": False, "max_length": 200, }, ], } ) def test_markdown_projection_has_title_and_id(): md = project_markdown(_request(), "ix-a1b2") assert "### Deploy to staging?" in md assert "`staging`" in md assert "" in md assert "[Confirm]" in md def test_plain_menu_for_confirm(): req = validate_prompt_args( { "title": "Delete?", "widgets": [ {"type": "confirm", "name": "delete", "label": "Delete", "default": False} ], } ) text = project_plain_menu(req) assert "yes | no" in text.lower() or "Reply: yes" in text