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.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('Custom error')
Ejemplo n.º 2
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.º 3
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.Text(variable, message)

        sut = ConsoleRender(event_generator=stdin)
        with self.assertRaises(KeyboardInterrupt):
            sut.render(question)
Ejemplo n.º 4
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.º 5
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)
Ejemplo n.º 6
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)
Ejemplo n.º 7
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.º 8
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.º 9
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('\d+', x),
                                  message=message)

        sut = ConsoleRender(event_generator=stdin)
        result = sut.render(question)
        self.assertEquals(expected, result)
        self.assertInStdout(message)
        self.assertInStdout('"Invalid" is not a valid foo')
Ejemplo n.º 10
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)
Ejemplo n.º 11
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)
Ejemplo n.º 12
0
def text(message, render=None, **kwargs):
    render = render or ConsoleRender()
    question = questions.Text(name="", message=message, **kwargs)
    return render.render(question)