Example #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')
Example #2
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)
Example #3
0
    def test_ctrl_c_breaks_execution(self):
        stdin_array = [key.CTRL_C]
        stdin = helper.key_factory(*stdin_array)
        message = 'Foo message'
        variable = 'Bar variable'

        question = questions.Text(variable, message)

        sut = ConsoleRender(key_generator=stdin)
        with self.assertRaises(KeyboardInterrupt):
            sut.render(question)
Example #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)
Example #5
0
    def test_invalid_answer(self):
        stdin = helper.event_factory('a', 'N')
        message = 'Foo message'
        variable = 'Bar variable'

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

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(errors.ValidationError):
            sut.render(question)
Example #6
0
    def test_move_up(self):
        stdin = helper.key_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(key_generator=stdin)
        result = sut.render(question)

        self.assertEqual('foo', result)
Example #7
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.assertEquals('b', result)
Example #8
0
    def test_choose_the_second(self):
        stdin = helper.event_factory(key.DOWN, 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)

        self.assertEqual('bar', result)
    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)
    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)

        self.assertEqual([], result)
Example #11
0
    def test_one_choice(self):
        stdin = helper.event_factory(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)
        self.assertEqual(['foo'], result)
Example #12
0
    def test_right_cursor_do_not_unselect(self):
        stdin_array = [key.RIGHT, key.RIGHT, 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)

        self.assertEqual(["foo"], result)
Example #13
0
    def test_invalid_answer(self):
        stdin = helper.key_factory('a', 'N')
        message = 'Foo message'
        variable = 'Bar variable'

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

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

        self.assertInStdout('Invalid value')
Example #14
0
    def test_validate_custom_error(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='')

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

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(StopIteration):
            sut.render(question)
Example #15
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 = questions.Password(variable, message)

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

        self.assertInStdout(message)
        self.assertNotInStdout('my password')
Example #16
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 == []
Example #17
0
    def test_ignore_true_should_return(self):
        stdin = "This is a foo message"
        message = "Foo message"
        variable = "Bar variable"
        expected = ""

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

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

        self.assertEqual(expected, result)
        self.assertNotInStdout(message)
Example #18
0
    def test_can_move(self):
        stdin = helper.event_factory(key.DOWN, key.DOWN, key.UP, 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)

        assert result == ["bar"]
    def test_one_choice(self):
        stdin = helper.event_factory(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)
        self.assertEqual(['foo'], result)
Example #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 = questions.Password(variable, message, validate=validate)

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(StopIteration):
            sut.render(question)
Example #21
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)
        self.assertEqual(["bar"], result)
Example #22
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)

        self.assertEqual([], result)
Example #23
0
    def test_right_cursor_selects_too(self):
        stdin_array = [key.RIGHT, key.ENTER]
        stdin = helper.key_factory(*stdin_array)
        message = 'Foo message'
        variable = 'Bar variable'
        choices = ['foo', 'bar', 'bazz']

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

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

        self.assertEqual(['foo'], result)
Example #24
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")
Example #25
0
    def test_yes_as_default(self):
        stdin = helper.event_factory(key.ENTER)
        message = 'Foo message'
        variable = 'Bar variable'
        expected = True

        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)')
Example #26
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.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('(Y/n)')
Example #27
0
    def test_do_not_show_values(self):
        stdin = helper.key_factory(
            'm', 'y', ' ', 'p', 'a', 's', 's', 'w', 'o', 'r', 'd',
            key.ENTER)
        message = 'Foo message'
        variable = 'Bar variable'

        question = questions.Password(variable, message)

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

        self.assertInStdout(message)
        self.assertNotInStdout('my password')
Example #28
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)
Example #29
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.Checkbox(variable, message, choices=choices)

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

        self.assertInStdout(message)
        for choice in choices:
            self.assertInStdout(choice)
Example #30
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)

        self.assertEqual([8], result)
Example #31
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)
Example #32
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.assertEquals(stdin_msg, result)
        self.assertInStdout(message)
Example #33
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)
Example #34
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)")
    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)
Example #36
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)")
    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.Checkbox(variable, message, choices=choices)

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

        self.assertInStdout(message)
        for choice in choices:
            self.assertInStdout(choice)
Example #38
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)
Example #39
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')
Example #40
0
    def test_move_up_carousel(self):
        stdin = helper.event_factory(key.UP, key.ENTER)
        message = "Foo message"
        variable = "Bar variable"
        choices = ["foo", "bar", "bazz"]

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

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

        self.assertEqual("bazz", result)
Example #41
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)
Example #42
0
    def test_no_as_default(self):
        stdin = helper.key_factory(key.ENTER)
        message = 'Foo message'
        variable = 'Bar variable'
        expected = False

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

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

        self.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('(y/N)')
Example #43
0
    def test_move_up_carousel(self):
        stdin = helper.event_factory(key.UP, key.ENTER)
        message = 'Foo message'
        variable = 'Bar variable'
        choices = ['foo', 'bar', 'bazz']

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

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

        self.assertEqual('bazz', result)
Example #44
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)
Example #45
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()

        self.assertEqual(['bazz'], result)
Example #46
0
    def test_ignore_true_should_return(self):
        stdin = 'This is a foo message'
        message = 'Foo message'
        variable = 'Bar variable'
        expected = object()

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

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

        self.assertEquals(expected, result)
        self.assertNotInStdout(message)
Example #47
0
    def test_answring_n(self):
        stdin = helper.key_factory('n')
        message = 'Foo message'
        variable = 'Bar variable'
        expected = False

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

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

        self.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('(Y/n)')
    def test_yes_as_default(self):
        stdin = helper.event_factory(key.ENTER)
        message = 'Foo message'
        variable = 'Bar variable'
        expected = True

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

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

        self.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('(Y/n)')
    def test_cannot_move_beyond_upper_limit(self):
        stdin = helper.event_factory(
            key.UP,
            key.UP,
            key.UP,
            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.assertEqual(['foo'], result)
Example #50
0
    def test_validation_fails(self):
        stdin_array = [x for x in
                       'Invalid' + key.ENTER
                       + '9999' + key.ENTER]
        stdin = helper.key_factory(*stdin_array)
        message = 'Insert number'
        variable = 'foo'
        expected = '9999'

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

        sut = ConsoleRender(key_generator=stdin)
        result = sut.render(question)
        self.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('Invalid value')
Example #51
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)
Example #52
0
    def test_cannot_move_beyond_upper_limit(self):
        stdin = helper.event_factory(
            key.UP,
            key.UP,
            key.UP,
            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.assertEqual(["foo"], result)
Example #53
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)
Example #54
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)
Example #55
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")
Example #56
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)
Example #57
0
    def test_ignore_cursors(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.assertEquals('abcde', result)
Example #58
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)
Example #59
0
    def test_rendering_erroneous_type(self):
        question = questions.Question('foo', 'bar')

        sut = ConsoleRender()
        with self.assertRaises(errors.UnknownQuestionTypeError):
            sut.render(question)