示例#1
0
def test_string_handler_invalid(mocker, mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'input',
            'message': 'message',
            'description': 'description',
            'validators': [{
                'name': 'required'
            }],
        },
    ]
    mocked_style = mocker.MagicMock()
    mocker.patch(
        'interrogatio.core.prompt.for_prompt',
        return_value=mocked_style,
    )
    mocked_text = mocker.MagicMock()
    mocked_formatted_text = mocker.patch(
        'interrogatio.core.prompt.FormattedText',
        return_value=mocked_text,
    )
    mocked_print = mocker.patch(
        'interrogatio.core.prompt.print_formatted_text')
    mock_input.send_text('\n\x03')
    interrogatio(questions)

    mocked_print.assert_called_once_with(
        mocked_text,
        style=mocked_style,
    )

    mocked_formatted_text.assert_called_once_with(
        [('class:error', 'this field is required')], )
示例#2
0
def test_selectmany_handler_with_checked(mock_input):
    questions = [
        {
            'name':
            'question',
            'type':
            'selectmany',
            'message':
            'message',
            'description':
            'description',
            'values': [
                ('first', 'First'),
                ('second', 'Second'),
                ('third', 'Third'),
            ],
            'default': {'first', 'third'},
        },
    ]

    mock_input.send_text('\t\t' + chr(13))
    answers = interrogatio(questions)

    assert 'question' in answers
    assert sorted(answers['question']) == sorted(['first', 'third'])
示例#3
0
def test_selectone_handler_with_default(mock_input):
    questions = [
        {
            'name':
            'question',
            'type':
            'selectone',
            'message':
            'message',
            'description':
            'description',
            'values': [
                ('first', 'First'),
                ('second', 'Second'),
                ('third', 'Third'),
            ],
            'default':
            'third',
        },
    ]

    mock_input.send_text(chr(13))
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == 'third'
示例#4
0
def test_password_handler_ctrl_c(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'password',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('\x03')
    answers = interrogatio(questions)

    assert answers is None
示例#5
0
def test_password_handler(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'password',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('mypassword\n')
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == 'mypassword'
示例#6
0
def test_date_handler_exceed_length(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'date',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('2020010101' + chr(13))
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == datetime(2020, 1, 1, tzinfo=timezone.utc)
示例#7
0
def test_date_handler_invalid_char(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'date',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('**##**@@' + chr(13))
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] is None
示例#8
0
def test_date_handler_go_previous_beginning(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'date',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('20200101' + chr(127) * 9 + '20220706' + chr(13), )
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == datetime(2022, 7, 6, tzinfo=timezone.utc)
示例#9
0
def test_string_handler(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'input',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('this is the answer\n')
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == 'this is the answer'
示例#10
0
def test_daterange_handler(mock_input):
    questions = [
        {
            'name': 'question',
            'type': 'daterange',
            'message': 'message',
            'description': 'description',
        },
    ]

    mock_input.send_text('20200101\t20210101' + chr(13))
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == {
        'from': datetime(2020, 1, 1, tzinfo=timezone.utc),
        'to': datetime(2021, 1, 1, tzinfo=timezone.utc),
    }
示例#11
0
def test_selectmany_handler_ctrl_c(mock_input):
    questions = [
        {
            'name':
            'question',
            'type':
            'selectmany',
            'message':
            'message',
            'description':
            'description',
            'values': [
                ('first', 'First'),
                ('second', 'Second'),
                ('third', 'Third'),
            ],
        },
    ]

    mock_input.send_text('\x03')
    answers = interrogatio(questions)

    assert answers is None
示例#12
0
def test_selectmany_handler_select_none(mock_input):
    questions = [
        {
            'name':
            'question',
            'type':
            'selectmany',
            'message':
            'message',
            'description':
            'description',
            'values': [
                ('first', 'First'),
                ('second', 'Second'),
                ('third', 'Third'),
            ],
        },
    ]

    mock_input.send_text(' \t \t' + chr(13))
    answers = interrogatio(questions)

    assert 'question' in answers
    assert answers['question'] == []