|
1 | 1 | import logging
|
| 2 | +from unittest.mock import call |
2 | 3 | import requests
|
3 | 4 | import usabilla as ub
|
4 | 5 |
|
@@ -124,18 +125,40 @@ def test_item_iterator(self):
|
124 | 125 | items = ['one', 'two', 'three', 'four']
|
125 | 126 | has_more = {'hasMore': True, 'items': items[:2], 'lastTimestamp': 1400000000001}
|
126 | 127 | no_more = {'hasMore': False, 'items': items[2:], 'lastTimestamp': 1400000000002}
|
| 128 | + expected_set_query_parameters_calls = [ call({'since': 1400000000001}), call({'since': 1400000000002}), call({}) ] |
| 129 | + |
127 | 130 | self.client.set_query_parameters = Mock()
|
128 | 131 | self.client.send_signed_request = Mock(side_effect=[has_more, no_more])
|
| 132 | + |
129 | 133 | index = 0
|
130 | 134 | for item in self.client.item_iterator('/some/url'):
|
131 | 135 | self.assertEqual(item, items[index])
|
132 | 136 | index += 1
|
133 |
| - self.client.set_query_parameters.assert_called_with({'since': 1400000000002}) |
| 137 | + |
| 138 | + self.assertEqual(self.client.set_query_parameters.call_args_list, expected_set_query_parameters_calls) |
134 | 139 | self.assertEqual(self.client.send_signed_request.call_count, 2)
|
| 140 | + |
135 | 141 | self.client.send_signed_request.side_effect = requests.exceptions.HTTPError('mocked error')
|
136 | 142 | with self.assertRaises(requests.exceptions.HTTPError):
|
137 | 143 | list(self.client.item_iterator('/some/url'))
|
138 | 144 |
|
| 145 | + def test_item_iterator_resets_query_parameters_after_returning_all_items(self): |
| 146 | + first_response = {'hasMore': True, 'items': [1], 'lastTimestamp': 1400000000001} |
| 147 | + second_response = {'hasMore': False, 'items': [2], 'lastTimestamp': 1400000000002} |
| 148 | + third_response = {'hasMore': False, 'items': [3], 'lastTimestamp': 1400000000003} |
| 149 | + |
| 150 | + self.client.send_signed_request = Mock(side_effect=[first_response, second_response, third_response]) |
| 151 | + |
| 152 | + expected_query_parameters = ['', 'since=1400000000001', ''] |
| 153 | + |
| 154 | + index = 0 |
| 155 | + for response in [self.client.item_iterator('/some/url'), self.client.item_iterator('/some/url')]: |
| 156 | + for _ in response: |
| 157 | + self.assertEqual(expected_query_parameters[index], self.client.get_query_parameters()) |
| 158 | + index+=1 |
| 159 | + |
| 160 | + self.assertEqual(self.client.send_signed_request.call_count, 3) |
| 161 | + |
139 | 162 | def test_get_resource(self):
|
140 | 163 | self.client.item_iterator = Mock()
|
141 | 164 | self.client.send_signed_request = Mock()
|
|
0 commit comments