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")])
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
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
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?: "