# retoor <retoor@molodetz.nl>

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 "<!-- ai-interaction:ix-a1b2 -->" 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
