Ejemplo n.º 1
0
    def test_validation_fails_with_custom_message(self):
        stdin_array = [
            x for x in "Invalid" + key.ENTER + key.BACKSPACE * 20 + "9999" +
            key.ENTER
        ]
        stdin = helper.event_factory(*stdin_array)

        message = "Insert number"
        variable = "foo"
        expected = "9999"

        def raise_exc(x, current):
            if current != "9999":
                raise errors.ValidationError("", reason="Custom error")
            return True

        question = questions.Text(variable,
                                  validate=raise_exc,
                                  message=message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)
        self.assertEqual(expected, result)
        self.assertInStdout(message)
        self.assertInStdout("Custom error")
Ejemplo n.º 2
0
    def test_choose_with_long_choices(self):
        stdin = helper.event_factory(
            key.DOWN,
            key.DOWN,
            key.DOWN,
            key.DOWN,
            key.DOWN,
            key.DOWN,
            key.DOWN,
            key.DOWN,
            key.SPACE,
            key.DOWN,
            key.DOWN,
            key.ENTER,
        )
        message = "Number message"
        variable = "Number variable"
        choices = list(range(15))

        question = questions.Checkbox(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        assert result == [8]
Ejemplo n.º 3
0
    def test_ctrl_c_breaks_execution(self):
        stdin = helper.event_factory(key.CTRL_C)
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Confirm(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(KeyboardInterrupt):
            sut.render(question)
Ejemplo n.º 4
0
    def test_ctrl_c_breaks_execution(self, edit):
        stdin = [key.CTRL_C]
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Editor(variable, message)

        sut = ConsoleRender(event_generator=helper.event_factory(*stdin))
        with self.assertRaises(KeyboardInterrupt):
            sut.render(question)
        self.assertFalse(edit.called)
Ejemplo n.º 5
0
    def test_ctrl_c_breaks_execution(self):
        stdin_array = [key.CTRL_C]
        stdin = helper.event_factory(*stdin_array)
        message = "Foo message"
        variable = "Bar variable"

        question = questions.List(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        with pytest.raises(KeyboardInterrupt):
            sut.render(question)
Ejemplo n.º 6
0
    def test_ctrl_c_breaks_execution(self):
        stdin_array = [key.CTRL_C]
        stdin = helper.event_factory(*stdin_array)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.Checkbox(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(KeyboardInterrupt):
            sut.render(question)
Ejemplo n.º 7
0
    def test_invalid_answer(self):
        stdin = helper.event_factory("Z", "Z", "Z", "Y")
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Confirm(variable, message=message, default=True)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertNotInStdout("Z")
        self.assertTrue(result)
Ejemplo n.º 8
0
    def test_move_up(self):
        stdin = helper.event_factory(key.DOWN, key.UP, key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.List(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        assert result == "foo"
Ejemplo n.º 9
0
    def test_allows_deletion(self):
        stdin_array = ["a", key.BACKSPACE, "b", key.ENTER]
        stdin = helper.event_factory(*stdin_array)
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Text(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertEqual("b", result)
Ejemplo n.º 10
0
    def test_choose_the_second(self):
        stdin = helper.event_factory(key.DOWN, key.SPACE, key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.Checkbox(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertInStdout(message)
        assert result == ["bar"]
Ejemplo n.º 11
0
    def test_left_cursor_do_not_select(self):
        stdin_array = [key.SPACE, key.LEFT, key.LEFT, key.ENTER]
        stdin = helper.event_factory(*stdin_array)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.Checkbox(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        assert result == []
Ejemplo n.º 12
0
    def test_do_not_show_values(self):
        stdin = helper.event_factory("m", "y", " ", "p", "a", "s", "s", "w",
                                     "o", "r", "d", key.ENTER)
        message = "Foo message"
        variable = "Bar variable"

        question = inquirer.questions.Password(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        sut.render(question)

        self.assertInStdout(message)
        self.assertNotInStdout("my password")
Ejemplo n.º 13
0
    def test_basic_render(self, edit):
        edit.return_value = b"Some text"
        stdin = [key.ENTER]
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Editor(variable, message)

        sut = ConsoleRender(event_generator=helper.event_factory(*stdin))
        result = sut.render(question)

        self.assertEqual("Some text", result)
        self.assertInStdout(message)
        self.assertTrue(edit.called)
Ejemplo n.º 14
0
    def test_no_as_default(self):
        stdin = helper.event_factory(key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        expected = False

        question = questions.Confirm(variable, message=message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertEqual(expected, result)
        self.assertInStdout(message)
        self.assertInStdout("(y/N)")
Ejemplo n.º 15
0
    def test_basic_render(self):
        stdin_msg = "This is a foo message"
        stdin_array = [x for x in stdin_msg + key.ENTER]
        stdin = helper.event_factory(*stdin_array)
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Text(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertEqual(stdin_msg, result)
        self.assertInStdout(message)
Ejemplo n.º 16
0
    def test_answring_N(self):
        stdin = helper.event_factory("N")
        message = "Foo message"
        variable = "Bar variable"
        expected = False

        question = questions.Confirm(variable, message=message, default=True)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertEqual(expected, result)
        self.assertInStdout(message)
        self.assertInStdout("(Y/n)")
Ejemplo n.º 17
0
    def test_all_choices_are_shown(self):
        stdin = helper.event_factory(key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.List(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        sut.render(question)

        self.assertInStdout(message)
        for choice in choices:
            self.assertInStdout(choice)
Ejemplo n.º 18
0
    def test_handle_validation_error_with_reason(self):
        stdin = helper.event_factory("p", "a", "s", "s", key.ENTER)
        message = "Foo message"
        variable = "Bar variable"

        def validate(answers, current):
            raise inquirer.errors.ValidationError("", reason="some reason")

        question = inquirer.questions.Password(variable,
                                               message,
                                               validate=validate)

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(StopIteration):
            sut.render(question)
Ejemplo n.º 19
0
    def test_move_up_carousel(self):
        stdin = helper.event_factory(key.UP, key.SPACE, key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.Checkbox(variable,
                                      message,
                                      choices=choices,
                                      carousel=True)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        assert result == ["bazz"]
Ejemplo n.º 20
0
    def test_validate(self):
        stdin = helper.event_factory("p", "a", "s", "s", key.ENTER)
        message = "Foo message"
        variable = "Bar variable"

        def validate(answers, current):
            return False

        question = inquirer.questions.Password(variable,
                                               message,
                                               validate=validate)

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(StopIteration):
            sut.render(question)
Ejemplo n.º 21
0
    def test_cannot_move_beyond_lower_limit(self):
        stdin = helper.event_factory(key.DOWN, key.DOWN, key.DOWN, key.DOWN,
                                     key.DOWN, key.DOWN, key.DOWN, key.SPACE,
                                     key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

        question = questions.Checkbox(variable, message, choices=choices)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.printStdout()

        assert result == ["bazz"]
Ejemplo n.º 22
0
    def test_ignore_true_should_return(self, edit):
        edit.return_value = b"Some text"
        stdin = [key.ENTER]
        message = "Foo message"
        variable = "Bar variable"
        expected = "Something default"

        question = questions.Editor(variable,
                                    ignore=True,
                                    default=expected,
                                    message=message)

        sut = ConsoleRender(event_generator=helper.event_factory(*stdin))
        result = sut.render(question)

        self.assertEqual(expected, result)
        self.assertNotInStdout(message)
        self.assertFalse(edit.called)
Ejemplo n.º 23
0
    def test_validation_fails(self, edit):
        stdin = [key.ENTER, key.ENTER]
        edit.side_effect = [b"Only one line", b"Two\nLines\nCool"]

        message = "Insert number"
        variable = "foo"
        expected = "Two\nLines\nCool"

        def val(_, x):
            return x.count("\n") >= 2

        question = questions.Editor(variable, validate=val, message=message)

        sut = ConsoleRender(event_generator=helper.event_factory(*stdin))
        result = sut.render(question)
        self.assertEqual(expected, result)
        self.assertInStdout(message)
        self.assertInStdout("Entered value is not a valid foo")
        self.assertTrue(edit.called)
Ejemplo n.º 24
0
    def test_validation_fails(self):
        stdin_array = [
            x for x in "Invalid" + key.ENTER + key.BACKSPACE * 20 + "9999" +
            key.ENTER
        ]
        stdin = helper.event_factory(*stdin_array)

        message = "Insert number"
        variable = "foo"
        expected = "9999"

        question = questions.Text(variable,
                                  validate=lambda _, x: re.match(r"\d+", x),
                                  message=message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)
        self.assertEqual(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('"Invalid" is not a valid foo')
Ejemplo n.º 25
0
    def test_validation_fails_with_custom_error(self, edit):
        stdin = [key.ENTER, key.ENTER]
        edit.side_effect = [b"Only one line", b"Two\nLines\nCool"]

        message = "Insert number"
        variable = "foo"
        expected = "Two\nLines\nCool"

        def val(_, x):
            if x.count("\n") < 2:
                raise errors.ValidationError("", reason="Some bad reason")

            return True

        question = questions.Editor(variable, validate=val, message=message)

        sut = ConsoleRender(event_generator=helper.event_factory(*stdin))
        result = sut.render(question)
        self.assertEqual(expected, result)
        self.assertInStdout(message)
        self.assertInStdout("Some bad reason")
        self.assertTrue(edit.called)
Ejemplo n.º 26
0
    def test_cursor_movement(self):
        stdin_array = [
            "a",
            key.UP,
            "b",
            key.DOWN,
            "c",
            key.LEFT,
            "d",
            key.RIGHT,
            "e",
            key.ENTER,
        ]
        stdin = helper.event_factory(*stdin_array)
        message = "Foo message"
        variable = "Bar variable"

        question = questions.Text(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)

        self.assertEqual("abdce", result)