|
1 | | -"""Unit tests for the Usabilla API.""" |
2 | | - |
3 | 1 | import sys |
4 | 2 | import unittest |
5 | 3 | import usabilla as ub |
6 | 4 |
|
| 5 | +from mock import Mock |
7 | 6 | from unittest import TestCase, main as unittest_main |
8 | 7 |
|
9 | 8 |
|
@@ -96,6 +95,37 @@ def test_check_resource_validity(self): |
96 | 95 | self.client.check_resource_validity('live', 'websites', 'nonexisting') |
97 | 96 | self.assertEqual(self.client.check_resource_validity('live', 'websites', 'button'), '/live/websites/button') |
98 | 97 |
|
| 98 | + def test_handle_id(self): |
| 99 | + url = '/live/websites/button/:id/feedback' |
| 100 | + with self.assertRaises(ub.GeneralError): |
| 101 | + self.client.handle_id(url, '') |
| 102 | + self.assertEqual(self.client.handle_id(url, '*'), '/live/websites/button/%2A/feedback') |
| 103 | + self.assertEqual(self.client.handle_id(url, 42), '/live/websites/button/42/feedback') |
| 104 | + |
| 105 | + def test_item_iterator(self): |
| 106 | + items = ['one', 'two', 'three', 'four'] |
| 107 | + has_more = {'hasMore': True, 'items': items[:2], 'lastTimestamp': 1400000000001} |
| 108 | + no_more = {'hasMore': False, 'items': items[2:], 'lastTimestamp': 1400000000002} |
| 109 | + self.client.set_query_parameters = Mock() |
| 110 | + self.client.send_signed_request = Mock(side_effect=[has_more, no_more]) |
| 111 | + index = 0 |
| 112 | + for item in self.client.item_iterator('/some/url'): |
| 113 | + self.assertEqual(item, items[index]) |
| 114 | + index += 1 |
| 115 | + self.client.set_query_parameters.assert_called_with({'since': 1400000000002}) |
| 116 | + self.assertEqual(self.client.send_signed_request.call_count, 2) |
| 117 | + self.client.send_signed_request.side_effect = ub.GeneralError('mocked', 'error') |
| 118 | + for item in self.client.item_iterator('/some/url'): |
| 119 | + raise ub.GeneralError('should not', 'come here') |
| 120 | + |
| 121 | + def test_get_resource(self): |
| 122 | + self.client.item_iterator = Mock() |
| 123 | + self.client.send_signed_request = Mock() |
| 124 | + self.client.get_resource('live', 'websites', 'feedback', 42) |
| 125 | + self.client.send_signed_request.assert_called_with('/live/websites/button/42/feedback') |
| 126 | + self.client.get_resource('live', 'websites', 'button', None, True) |
| 127 | + self.client.item_iterator.assert_called_with('/live/websites/button') |
| 128 | + |
99 | 129 |
|
100 | 130 | if __name__ == '__main__': |
101 | 131 | unittest_main() |
0 commit comments