|
23 | 23 | from boxsdk.object.group import Group |
24 | 24 | from boxsdk.object.user import User |
25 | 25 | from boxsdk.object.group_membership import GroupMembership |
| 26 | +from boxsdk.pagination.marker_based_object_collection import MarkerBasedObjectCollection |
26 | 27 |
|
27 | 28 |
|
28 | 29 | @pytest.fixture |
@@ -60,6 +61,11 @@ def folder_id(): |
60 | 61 | return '1022' |
61 | 62 |
|
62 | 63 |
|
| 64 | +@pytest.fixture(scope='module') |
| 65 | +def marker_id(): |
| 66 | + return 'marker_1' |
| 67 | + |
| 68 | + |
63 | 69 | @pytest.fixture(scope='module') |
64 | 70 | def users_response(user_id_1, user_id_2): |
65 | 71 | # pylint:disable=redefined-outer-name |
@@ -145,6 +151,19 @@ def search_response(file_id, folder_id): |
145 | 151 | return mock_network_response |
146 | 152 |
|
147 | 153 |
|
| 154 | +@pytest.fixture(scope='module') |
| 155 | +def recent_items_response(file_id): |
| 156 | + mock_network_response = Mock(DefaultNetworkResponse) |
| 157 | + mock_network_response.json.return_value = { |
| 158 | + 'entries': [ |
| 159 | + {'type': 'recent_item', 'item': {'type': 'file', 'id': file_id}} |
| 160 | + ], |
| 161 | + 'next_marker': None, |
| 162 | + 'limit': 100, |
| 163 | + } |
| 164 | + return mock_network_response |
| 165 | + |
| 166 | + |
148 | 167 | @pytest.mark.parametrize('test_class, factory_method_name', [ |
149 | 168 | (Folder, 'folder'), |
150 | 169 | (File, 'file'), |
@@ -262,6 +281,31 @@ def test_create_group_returns_the_correct_group_object(mock_client, mock_box_ses |
262 | 281 | assert new_group.name == test_group_name |
263 | 282 |
|
264 | 283 |
|
| 284 | +def test_get_recent_items_returns_the_correct_items(mock_client, mock_box_session, recent_items_response, file_id): |
| 285 | + mock_box_session.get.return_value = recent_items_response |
| 286 | + recent_items = mock_client.get_recent_items() |
| 287 | + assert isinstance(recent_items, MarkerBasedObjectCollection) |
| 288 | + recent_item = recent_items.next() |
| 289 | + assert recent_item.item.object_id == file_id |
| 290 | + next_pointer = recent_items.next_pointer() |
| 291 | + assert next_pointer is None |
| 292 | + |
| 293 | + |
| 294 | +def test_get_recent_items_sends_get_with_correct_params(mock_client, mock_box_session, recent_items_response, marker_id): |
| 295 | + limit = 50 |
| 296 | + marker = marker_id |
| 297 | + fields = ['modified_at', 'name'] |
| 298 | + expected_params = { |
| 299 | + 'limit': limit, |
| 300 | + 'marker': marker_id, |
| 301 | + 'fields': ','.join(fields), |
| 302 | + } |
| 303 | + mock_box_session.get.return_value = recent_items_response |
| 304 | + object_collection = mock_client.get_recent_items(limit=limit, marker=marker, fields=fields) |
| 305 | + object_collection.next() |
| 306 | + mock_box_session.get.assert_called_once_with('{0}/recent_items'.format(API.BASE_API_URL), params=expected_params) |
| 307 | + |
| 308 | + |
265 | 309 | @pytest.mark.parametrize('password', (None, 'p4ssw0rd')) |
266 | 310 | def test_get_shared_item_returns_the_correct_item(mock_client, mock_box_session, shared_item_response, password): |
267 | 311 | # pylint:disable=redefined-outer-name |
|
0 commit comments