From 0d56b5a84aba8364c9f5694c93d3508c70ce69ea Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Wed, 8 May 2024 12:43:01 +0200 Subject: [PATCH 1/2] :sparkles: [maykinmedia/archiefbeheercomponent#345] Add list endpoint for destruction lists --- .../destruction/api/viewsets.py | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/backend/src/openarchiefbeheer/destruction/api/viewsets.py b/backend/src/openarchiefbeheer/destruction/api/viewsets.py index a976de45..a4f81d70 100644 --- a/backend/src/openarchiefbeheer/destruction/api/viewsets.py +++ b/backend/src/openarchiefbeheer/destruction/api/viewsets.py @@ -1,5 +1,7 @@ from django.db import transaction +from django.utils.translation import gettext_lazy as _ +from drf_spectacular.utils import OpenApiExample, extend_schema, extend_schema_view from rest_framework import mixins, viewsets from rest_framework.permissions import IsAuthenticated @@ -8,7 +10,42 @@ from .serializers import DestructionListSerializer -class DestructionListViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet): +@extend_schema_view( + list=extend_schema( + summary=_("List destruction lists"), + description=_("List all destruction lists."), + ), + create=extend_schema( + summary=_("Create destruction list"), + description=_("Create a new destruction list."), + examples=[ + OpenApiExample( + name="Example list creation", + value={ + "name": "An example list", + "containsSensitiveInfo": True, + "assignees": [ + {"user": 1, "order": 0}, + {"user": 2, "order": 1}, + ], + "items": [ + { + "zaak": "http://some-zaken-api.nl/zaken/api/v1/zaken/111-111-111", + "extraZaakData": {}, + }, + { + "zaak": "http://some-zaken-api.nl/zaken/api/v1/zaken/222-222-222", + "extraZaakData": {}, + }, + ], + }, + ) + ], + ), +) +class DestructionListViewSet( + mixins.CreateModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet +): serializer_class = DestructionListSerializer queryset = DestructionList.objects.all() From b454200109c269101030b6ee2b685aaf6a970c89 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Wed, 8 May 2024 12:43:20 +0200 Subject: [PATCH 2/2] :white_check_mark: Test list endpoint for destruction lists --- .../destruction/tests/test_endpoints.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py b/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py index ab8ef589..a9fff743 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py @@ -7,7 +7,10 @@ from openarchiefbeheer.accounts.tests.factories import UserFactory from openarchiefbeheer.destruction.constants import ListItemStatus from openarchiefbeheer.destruction.models import DestructionList -from openarchiefbeheer.destruction.tests.factories import DestructionListItemFactory +from openarchiefbeheer.destruction.tests.factories import ( + DestructionListFactory, + DestructionListItemFactory, +) class DestructionListViewSetTest(APITestCase): @@ -85,6 +88,18 @@ def test_create_destruction_list(self): self.assertEqual(destruction_list.author, record_manager) + def test_list_destruction_lists(self): + user = UserFactory.create() + DestructionListFactory.create_batch(3) + + self.client.force_authenticate(user=user) + endpoint = reverse("api:destructionlist-list") + + response = self.client.get(endpoint) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.json()), 3) + def test_zaak_already_in_another_destruction_list(self): record_manager = UserFactory.create(role__can_start_destruction=True) user1 = UserFactory.create(