From 205c4eb516a097724f26842c743f03123fbb0119 Mon Sep 17 00:00:00 2001 From: Conor Holden Date: Fri, 1 Nov 2024 15:24:21 +0100 Subject: [PATCH] :bug:[#227] fix partijIdentificatie crashing when not provided --- .../api/serializers/partijen.py | 2 +- .../api/tests/test_partijen.py | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/src/openklant/components/klantinteracties/api/serializers/partijen.py b/src/openklant/components/klantinteracties/api/serializers/partijen.py index 66f9b24f..d4c31546 100644 --- a/src/openklant/components/klantinteracties/api/serializers/partijen.py +++ b/src/openklant/components/klantinteracties/api/serializers/partijen.py @@ -720,7 +720,7 @@ def update(self, instance, validated_data): @transaction.atomic def create(self, validated_data): - partij_identificatie = validated_data.pop("partij_identificatie") + partij_identificatie = validated_data.pop("partij_identificatie", None) digitale_adressen = validated_data.pop("digitaaladres_set") rekeningnummers = validated_data.pop("rekeningnummer_set") diff --git a/src/openklant/components/klantinteracties/api/tests/test_partijen.py b/src/openklant/components/klantinteracties/api/tests/test_partijen.py index bae2e2f5..171b43f2 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_partijen.py +++ b/src/openklant/components/klantinteracties/api/tests/test_partijen.py @@ -1,5 +1,7 @@ import datetime +from django.utils.translation import gettext as _ + from rest_framework import status from vng_api_common.tests import reverse @@ -307,6 +309,71 @@ def test_create_partij(self): ], ) + def test_create_partij_only_required(self): + """ + Test if object is created with only required parameters + + Regression Test for #227 + """ + list_url = reverse("klantinteracties:partij-list") + + response = self.client.post(list_url, {}) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + response_data = response.json() + self.assertEqual(response_data["title"], "Invalid input.") + self.assertEqual(response_data["code"], "invalid") + self.assertEqual(response_data["status"], 400) + self.assertEqual( + response_data["invalidParams"], + [ + { + "name": "digitaleAdressen", + "code": "required", + "reason": _("This field is required."), + }, + { + "name": "voorkeursDigitaalAdres", + "code": "required", + "reason": _("This field is required."), + }, + { + "name": "rekeningnummers", + "code": "required", + "reason": _("This field is required."), + }, + { + "name": "voorkeursRekeningnummer", + "code": "required", + "reason": _("This field is required."), + }, + { + "name": "soortPartij", + "code": "required", + "reason": _("This field is required."), + }, + { + "name": "indicatieActief", + "code": "required", + "reason": _("This field is required."), + }, + ], + ) + + digitaal_adres = DigitaalAdresFactory() + + data = { + "digitaleAdressen": [{"uuid": str(digitaal_adres.uuid)}], + "voorkeursDigitaalAdres": {"uuid": str(digitaal_adres.uuid)}, + "rekeningnummers": [], + "voorkeursRekeningnummer": None, + "soortPartij": "persoon", + "indicatieActief": True, + } + + response = self.client.post(list_url, data) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + def test_create_persoon(self): list_url = reverse("klantinteracties:partij-list") data = {