def test_basic():
    message = gnsq.Message(0, 42, '1234', 'sup')
    assert message.timestamp == 0
    assert message.attempts == 42
    assert message.id == '1234'
    assert message.body == 'sup'
    assert message.has_responded() is False
def test_backoff():
    message = gnsq.Message(0, 42, '1234', 'sup')
    mock_conn = MockConnection(message, [
        ('requeue', (message, 0, False)),
    ])
    assert message.has_responded() is False

    message.requeue(backoff=False)
    assert message.has_responded() is True

    with pytest.raises(gnsq.errors.NSQException):
        message.requeue()

    mock_conn.assert_finished()
def test_requeue_timeout():
    message = gnsq.Message(0, 42, '1234', 'sup')
    mock_conn = MockConnection(message, [
        ('requeue', (message, 1000, True)),
    ])
    assert message.has_responded() is False

    message.requeue(1000)
    assert message.has_responded() is True

    with pytest.raises(gnsq.errors.NSQException):
        message.requeue(1000)

    mock_conn.assert_finished()
def test_finish():
    message = gnsq.Message(0, 42, '1234', 'sup')
    mock_conn = MockConnection(message, [
        ('finish', (message, )),
    ])
    assert message.has_responded() is False

    message.finish()
    assert message.has_responded() is True

    with pytest.raises(gnsq.errors.NSQException):
        message.finish()

    mock_conn.assert_finished()