Skip to content

Commit cf0f55a

Browse files
authored
Merge pull request #203 from pneumaticapp/backend/datasets/fix_create_item_2
44963 fix updating dataset item
2 parents 7c27e20 + 53f0e7b commit cf0f55a

2 files changed

Lines changed: 53 additions & 2 deletions

File tree

backend/src/datasets/serializers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Meta:
2222
'order',
2323
)
2424

25-
id = IntegerField(read_only=True)
25+
id = IntegerField(required=False)
2626
value = CharField(max_length=200)
2727
order = IntegerField(default=0)
2828

@@ -64,7 +64,7 @@ class Meta:
6464
'items',
6565
)
6666

67-
id = IntegerField(read_only=True)
67+
id = IntegerField(required=False)
6868
name = CharField(max_length=200)
6969
description = CharField(allow_blank=True, default='')
7070
date_created_tsp = TimeStampField(

backend/src/datasets/tests/test_views/test_datasets/test_partial_update.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
import pytest
23
from datetime import timedelta
34

@@ -336,6 +337,56 @@ def test_partial_update__full_data__ok(mocker, api_client):
336337
)
337338

338339

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+
339390
def test_partial_update__service_exception__validation_error(
340391
mocker,
341392
api_client,

0 commit comments

Comments
 (0)