|
| 1 | + |
1 | 2 | import pytest |
2 | 3 | from datetime import timedelta |
3 | 4 |
|
@@ -336,6 +337,56 @@ def test_partial_update__full_data__ok(mocker, api_client): |
336 | 337 | ) |
337 | 338 |
|
338 | 339 |
|
| 340 | +def test_partial_update__update_and_create_items__ok(mocker, api_client): |
| 341 | + |
| 342 | + # arrange |
| 343 | + account = create_test_account() |
| 344 | + user = create_test_owner(account=account) |
| 345 | + dataset = create_test_dataset( |
| 346 | + account=account, |
| 347 | + name='Old Name', |
| 348 | + items_count=1, |
| 349 | + ) |
| 350 | + item = dataset.items.all().first() |
| 351 | + data_set_service_init_mock = mocker.patch.object( |
| 352 | + DataSetService, |
| 353 | + attribute='__init__', |
| 354 | + return_value=None, |
| 355 | + ) |
| 356 | + partial_update_mock = mocker.patch( |
| 357 | + 'src.datasets.services.' |
| 358 | + 'dataset.DataSetService.partial_update', |
| 359 | + return_value=dataset, |
| 360 | + ) |
| 361 | + api_client.token_authenticate(user=user) |
| 362 | + |
| 363 | + # act |
| 364 | + response = api_client.patch( |
| 365 | + path=f'/datasets/{dataset.id}', |
| 366 | + data={ |
| 367 | + 'items': [ |
| 368 | + {'id': item.id, 'value': item.value, 'order': item.order}, |
| 369 | + {'value': 2, 'order': 2}, |
| 370 | + ], |
| 371 | + }, |
| 372 | + ) |
| 373 | + |
| 374 | + # assert |
| 375 | + assert response.status_code == 200 |
| 376 | + data_set_service_init_mock.assert_called_once_with( |
| 377 | + user=user, |
| 378 | + instance=dataset, |
| 379 | + is_superuser=False, |
| 380 | + auth_type=AuthTokenType.USER, |
| 381 | + ) |
| 382 | + partial_update_mock.assert_called_once_with( |
| 383 | + items=[ |
| 384 | + {'id': item.id, 'value': item.value, 'order': item.order}, |
| 385 | + {'value': '2', 'order': 2}, |
| 386 | + ], |
| 387 | + ) |
| 388 | + |
| 389 | + |
339 | 390 | def test_partial_update__service_exception__validation_error( |
340 | 391 | mocker, |
341 | 392 | api_client, |
|
0 commit comments