Completed
Push — master ( 80fb6f...2ad6de )
by George
02:04
created

test_consumers()   A

Complexity

Conditions 3

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
c 1
b 0
f 0
dl 0
loc 4
rs 10
1
# -*- coding: utf-8 -*-
2
# vi:si:et:sw=4:sts=4:ts=4
3
4
import asyncio
5
from unittest import mock
6
7
import pytest
8
9
from loafer.conf import Settings
10
from loafer.exceptions import ConfigurationError, ConsumerError
11
from loafer.dispatcher import LoaferDispatcher
12
from loafer.manager import LoaferManager
13
14
15
@pytest.mark.asyncio
16
async def test_routes():
17
    manager = LoaferManager()
18
    assert manager.routes
19
    assert len(manager.routes) == 1
20
    # this value is set on envvar in pytest.ini
21
    assert manager.routes[0].name == 'test'
22
23
24
@pytest.mark.asyncio
25
async def test_routes_raise_error_if_not_configured():
26
    settings = Settings()
27
    settings.LOAFER_ROUTES = None
28
29
    with pytest.raises(ConfigurationError):
30
        manager = LoaferManager(settings)
31
        manager.routes
32
33
    settings.LOAFER_ROUTES = []
34
35
    with pytest.raises(ConfigurationError):
36
        manager = LoaferManager(settings)
37
38
        manager.routes
39
40
41
@pytest.mark.asyncio
42
async def test_routes_stop_manager_if_loop_is_running():
43
    settings = Settings()
44
    settings.LOAFER_ROUTES = None
45
    manager = LoaferManager(settings)
46
    manager.stop = mock.Mock()
47
48
    with mock.patch.object(manager._loop, 'is_running', return_value=True):
49
        with pytest.raises(ConfigurationError):
50
            manager.routes
51
52
        assert manager.stop.called
53
        assert manager.stop.called_once_with()
54
55
56
@pytest.mark.asyncio
57
async def test_consumers():
58
    manager = LoaferManager()
59
    assert manager.consumers
60
    assert len(manager.consumers) == 1
61
62
63
@pytest.mark.asyncio
64
async def test_consumers_returns_empty_if_not_configure():
65
    settings = Settings()
66
    settings.LOAFER_CONSUMERS = None
67
    manager = LoaferManager(settings)
68
    assert manager.consumers == []
69
70
71
@pytest.mark.asyncio
72
async def test_dispatcher():
73
    manager = LoaferManager()
74
    assert manager.dispatcher
75
    assert isinstance(manager.dispatcher, LoaferDispatcher)
76
77
78
@pytest.mark.asyncio
79
async def test_on_future_errors():
80
    manager = LoaferManager()
81
    manager.stop = mock.Mock()
82
    future = asyncio.Future()
83
    future.set_exception(ConsumerError)
84
    manager.on_future__errors(future)
85
86
    assert manager.stop.called
87
    assert manager.stop.called_once_with()
88