예제 #1
0
def test_prompt_default(mocker):
    console = RichConsole(file=io.StringIO())
    mocked_validator = mocker.MagicMock(return_value="default")
    assert (Prompt.ask(
        "What is your name?",
        console=console,
        stream=io.StringIO(""),
        default="default",
        validator=mocked_validator,
    ) == "default")
    assert console.file.getvalue() == "What is your name? [default]: "
    mocked_validator.assert_has_calls([call("default")])
예제 #2
0
def test_prompt_shows_message_from_validator_response(mocker):
    console = RichConsole(file=io.StringIO())
    mocked_validator = mocker.MagicMock(
        return_value=("foo@email", "failed to send a verification email"))
    assert (Prompt.ask(
        "what is your email?",
        console=console,
        stream=io.StringIO("foo@email"),
        validator=mocked_validator,
    ) == "foo@email")
    mocked_validator.assert_has_calls([call("foo@email")])

    expected = "what is your email?: failed to send a verification email\n"
    assert console.file.getvalue() == expected
예제 #3
0
def test_prompt_retries_on_invalid_response_from_validator(mocker):
    console = RichConsole(file=io.StringIO())
    mocked_validator = mocker.MagicMock(
        side_effect=[InvalidResponse("it is a number"), "foo"])
    assert (Prompt.ask(
        "what is your name?",
        console=console,
        stream=io.StringIO("3\nfoo"),
        validator=mocked_validator,
    ) == "foo")
    mocked_validator.assert_has_calls([call("3"), call("foo")])

    expected = "what is your name?: it is a number\nwhat is your name?: "
    assert console.file.getvalue() == expected
예제 #4
0
def test_prompt_str():
    console = RichConsole(file=io.StringIO())
    assert (Prompt.ask("What is your name?",
                       console=console,
                       stream=io.StringIO("foo")) == "foo")
    assert console.file.getvalue() == "What is your name?: "