Esempio n. 1
0
def test_async_conn_wait(mocker, state_sequence, call_sequence):
    mocker.patch('select.select')
    send_notices_mock = mocker.patch('lib.db.DB._send_notices')
    async_conn = mocker.MagicMock()
    async_conn.poll.side_effect = iter(state_sequence)

    DB._async_conn_wait(async_conn)

    expected_call_sequence = [f'{call}()' for call in call_sequence]
    actuall_call_sequence = [
        str(call).split('.')[1] for call in async_conn.method_calls
    ]
    assert actuall_call_sequence == expected_call_sequence
    send_notices_mock.assert_not_called()

    # Again but with notices_queue
    notices_queue = mocker.MagicMock()
    async_conn = mocker.MagicMock()
    async_conn.poll.side_effect = iter(state_sequence)

    DB._async_conn_wait(async_conn, notices_queue)

    actuall_call_sequence = [
        str(call).split('.')[1] for call in async_conn.method_calls
    ]
    assert actuall_call_sequence == expected_call_sequence
    assert send_notices_mock.call_count == len(state_sequence)
Esempio n. 2
0
def test_async_conn_wait_err(mocker):
    async_conn = mocker.MagicMock()
    async_conn.poll.return_value = 'GARBAGE'
    with pytest.raises(psycopg2.OperationalError):
        DB._async_conn_wait(async_conn)