diff --git a/django/website/rest_api/tests/item_delete_tests.py b/django/website/rest_api/tests/item_delete_tests.py index 030a459ad01b842e4985600df975033ff8a9980f..d2d9bc8da8d29d47fbc703faaa63770a645ad92b 100644 --- a/django/website/rest_api/tests/item_delete_tests.py +++ b/django/website/rest_api/tests/item_delete_tests.py @@ -17,26 +17,12 @@ def delete_item(id): @pytest.mark.django_db def test_delete_item(): + ItemFactory(body="test1") item = ItemFactory() - assert Item.objects.count() == 1 + assert Item.objects.count() == 2 response = delete_item(item.id) assert status.is_success(response.status_code) - assert Item.objects.count() == 0 - - -def delete_items(item_ids): - request = APIRequestFactory().delete('/items/', {'ids': item_ids}) - view = ItemViewSet.as_view(actions={'delete': 'bulk_destroy'}) - return view(request) - - -@pytest.mark.django_db -def test_delete_items(): - items = [ItemFactory().id for i in range(10)] - - response = delete_items(items) - - assert status.is_success(response.status_code) - assert Item.objects.count() == 0 + assert Item.objects.count() == 1 + assert Item.objects.get().body == "test1" diff --git a/django/website/rest_api/views.py b/django/website/rest_api/views.py index 0cf2c4329f5c4027bbc8c0ea2467adf95e899928..e2fdf3c8143f76416e53624d108e5b738f87cebd 100644 --- a/django/website/rest_api/views.py +++ b/django/website/rest_api/views.py @@ -1,4 +1,3 @@ -from rest_framework import generics from rest_framework_bulk.mixins import BulkDestroyModelMixin from rest_framework import viewsets diff --git a/django/website/transport/__init__.py b/django/website/transport/__init__.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..839ec98e1fbb1d6f568bb1e14055e41a5fa96146 100644 --- a/django/website/transport/__init__.py +++ b/django/website/transport/__init__.py @@ -0,0 +1,3 @@ +import items + +__all__ = ['items', ] diff --git a/django/website/transport/items.py b/django/website/transport/items.py index 2476566c67fbeff9a3d2f66d0aca493962167450..3983a36c6383c922805bd8b531c5bfce0d2ba006 100644 --- a/django/website/transport/items.py +++ b/django/website/transport/items.py @@ -6,18 +6,20 @@ from rest_api.views import ItemViewSet from .exceptions import TransportException - -url_name = 'item-list' actions = { 'get': 'list', 'post': 'create', - 'delete': 'bulk_destroy', + 'delete': 'destroy', } request_factory = APIRequestFactory() -def url(): - return reverse(url_name) +def list_url(): + return reverse('item-list') + + +def detail_url(id): + return reverse('item-detail', args=[id]) def get_view(): @@ -32,13 +34,14 @@ def list(**kwargs): """ # FIXME: currently only body exact filtering is supported view = get_view() - request = request_factory.get(url(), kwargs) + request = request_factory.get(list_url(), kwargs) return view(request).data + def create(item): """ Create an Item from the given dict """ view = get_view() - request = request_factory.post(url(), item) + request = request_factory.post(list_url(), item) response = view(request) if status.is_success(response.status_code): return response.data @@ -46,18 +49,17 @@ def create(item): response.data['status_code'] = response.status_code raise TransportException(response.data) -# TODO: I suspect we're actually not using this. Because the tool currently -# uses bulk delete. And of course we could use bulk delete and filter for -# the one item to delete. + def delete(id): """ Delete the Item wit the given ID """ view = get_view() - url = '/items/{}/'.format(id) - request = request_factory.delete(url) + request = request_factory.delete(detail_url(id)) return view(request, pk=id) + def bulk_delete(ids): """ Delete all Items whose ids appear in the given list """ - view = get_view() - request = request_factory.delete(url(), ids=ids) - return view(request) + # DELETE http requests appear not to send query parameters so + # for the moment I'm mapping this onto multiple calls to delete() + for id in ids: + delete(id) diff --git a/django/website/transport/tests/item_delete_tests.py b/django/website/transport/tests/item_delete_tests.py index 8b983caacf8b77dc8aadd0b277b891c16dfa8ee3..9a459456b8a3870e1c1582decafec7035123666a 100644 --- a/django/website/transport/tests/item_delete_tests.py +++ b/django/website/transport/tests/item_delete_tests.py @@ -7,19 +7,21 @@ from transport import items @pytest.mark.django_db def test_delete_item(): + ItemFactory() item = ItemFactory() - assert len(items.list()) == 1 + assert len(items.list()) == 2 items.delete(item.id) - assert len(items.list()) == 0 + assert len(items.list()) == 1 @pytest.mark.django_db -def test_delete_items(): +def test_bulk_delete(): + ItemFactory() ids = [ItemFactory().id for i in range(10)] - assert len(items.list()) == 10 + assert len(items.list()) == 11 items.bulk_delete(ids) - assert len(items.list()) == 0 + assert len(items.list()) == 1