Completed
Branch master (2d7773)
by George
01:26
created

test_dispatcher()   A

Complexity

Conditions 3

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 3
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
def test_routes(event_loop):
16
    manager = LoaferManager()
17
    assert manager.routes
18
    assert len(manager.routes) == 1
19
    # this value is set on envvar in pytest.ini
20
    assert manager.routes[0].name == 'test'
21
22
23
def test_routes_raise_error_if_not_configured(event_loop):
24
    settings = Settings()
25
    settings.LOAFER_ROUTES = None
26
27
    with pytest.raises(ConfigurationError):
28
        manager = LoaferManager(settings)
29
        manager.routes
30
31
    settings.LOAFER_ROUTES = []
32
33
    with pytest.raises(ConfigurationError):
34
        manager = LoaferManager(settings)
35
36
        manager.routes
37
38
39
def test_routes_stop_manager_if_loop_is_running(event_loop):
40
    settings = Settings()
41
    settings.LOAFER_ROUTES = None
42
    manager = LoaferManager(settings)
43
    manager.stop = mock.Mock()
44
45
    with mock.patch.object(event_loop, 'is_running', return_value=True):
46
        with pytest.raises(ConfigurationError):
47
            manager.routes
48
49
        assert manager.stop.called
50
        assert manager.stop.called_once_with()
51
52
53
def test_consumers(event_loop):
54
    manager = LoaferManager()
55
    assert manager.consumers
56
    assert len(manager.consumers) == 1
57
58
59
def test_consumers_returns_empty_if_not_configure(event_loop):
60
    settings = Settings()
61
    settings.LOAFER_CONSUMERS = None
62
    manager = LoaferManager(settings)
63
    assert manager.consumers == []
64
65
66
def test_dispatcher(event_loop):
67
    manager = LoaferManager()
68
    assert manager.dispatcher
69
    assert isinstance(manager.dispatcher, LoaferDispatcher)
70
71
72
def test_on_future_errors(event_loop):
73
    manager = LoaferManager()
74
    manager.stop = mock.Mock()
75
    future = asyncio.Future()
76
    future.set_exception(ConsumerError)
77
    manager.on_future__errors(future)
78
79
    assert manager.stop.called
80
    assert manager.stop.called_once_with()
81