Projekt

Obecné

Profil

Stáhnout (1.89 KB) Statistiky
| Větev: | Tag: | Revize:
1
from client.src.usb_detector import api_client
2

    
3
from unittest import mock
4

    
5

    
6
class CacheMock:
7

    
8
    def __init__(self):
9
        self._data = []
10

    
11
    def pop(self):
12
        return self._data.pop()
13

    
14
    def append(self, payload):
15
        self._data.append(payload)
16

    
17
    def __len__(self):
18
        return len(self._data)
19

    
20

    
21
class ConfigMock:
22

    
23
    def __init__(self):
24
        self.cache_max_entries = 5
25
        self.max_retries = 3
26

    
27

    
28
payload_mock = {
29
    "device": {
30
        "vendor_id": 1,
31
        "product_id": 2
32
    }
33
}
34

    
35

    
36
@mock.patch('client.src.usb_detector.api_client.send_data')
37
def test_resend_cached_payloads_1(send_data_mock):
38
    cache = CacheMock()
39
    config = ConfigMock()
40

    
41
    api_client._cache = cache
42
    api_client._config = config
43

    
44
    for _ in range(0, config.cache_max_entries + 1):
45
        api_client._cache_failed_payload(payload_mock)
46

    
47
    api_client._resend_cached_payloads()
48
    send_data_mock.assert_called()
49
    assert len(api_client._cache) == 2
50

    
51
    api_client._resend_cached_payloads()
52
    assert len(api_client._cache) == 0
53

    
54
    api_client._resend_cached_payloads()
55
    assert len(api_client._cache) == 0
56

    
57

    
58
@mock.patch('client.src.usb_detector.api_client.send_data')
59
def test_resend_cached_payloads_2(send_data_mock):
60
    cache = CacheMock()
61
    config = ConfigMock()
62

    
63
    api_client._cache = cache
64
    api_client._config = config
65

    
66
    api_client._resend_cached_payloads()
67
    send_data_mock.assert_not_called()
68
    assert len(api_client._cache) == 0
69

    
70

    
71
@mock.patch('client.src.usb_detector.api_client.send_data')
72
def test_resend_cached_payloads_3(send_data_mock):
73
    cache = CacheMock()
74
    config = ConfigMock()
75

    
76
    api_client._cache = cache
77
    api_client._config = config
78

    
79
    for _ in range(0, 2):
80
        api_client._cache_failed_payload(payload_mock)
81

    
82
    assert len(api_client._cache) == 2
83
    api_client._resend_cached_payloads()
84
    send_data_mock.assert_called()
85
    assert len(api_client._cache) == 0
86

    
(3-3/4)