Skip to content

Commit 14f0ae5

Browse files
[#239] Fix case create without partij
1 parent 8f46653 commit 14f0ae5

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

src/openklant/components/klantinteracties/api/serializers/partijen.py

+19-6
Original file line numberDiff line numberDiff line change
@@ -425,9 +425,14 @@ def update(self, instance, validated_data):
425425

426426
@transaction.atomic
427427
def create(self, validated_data):
428-
partij_uuid = str(validated_data.pop("partij").get("uuid"))
429-
validated_data["partij"] = Partij.objects.get(uuid=partij_uuid)
428+
partij = validated_data.pop("partij", None)
429+
if not partij:
430+
raise serializers.ValidationError(
431+
{"identificeerde_partij": _("Dit veld is vereist.")},
432+
code="required",
433+
)
430434

435+
validated_data["partij"] = Partij.objects.get(uuid=str(partij.get("uuid")))
431436
return super().create(validated_data)
432437

433438

@@ -721,12 +726,16 @@ def update(self, instance, validated_data):
721726
if partij_identificatoren:
722727
partij.partijidentificator_set.all().delete()
723728
for partij_identificator in partij_identificatoren:
724-
partij_identificator["partij"] = {"uuid": str(partij.uuid)}
729+
partij_identificator["identificeerde_partij"] = {
730+
"uuid": str(partij.uuid)
731+
}
725732
partij_identificator_serializer = PartijIdentificatorSerializer(
726733
data=partij_identificator
727734
)
728735
partij_identificator_serializer.is_valid(raise_exception=True)
729-
partij_identificator_serializer.create(partij_identificator)
736+
partij_identificator_serializer.create(
737+
partij_identificator_serializer.validated_data
738+
)
730739

731740
if partij_identificatie:
732741
serializer_class = self.discriminator.mapping[
@@ -828,12 +837,16 @@ def create(self, validated_data):
828837

829838
if partij_identificatoren:
830839
for partij_identificator in partij_identificatoren:
831-
partij_identificator["partij"] = {"uuid": str(partij.uuid)}
840+
partij_identificator["identificeerde_partij"] = {
841+
"uuid": str(partij.uuid)
842+
}
832843
partij_identificator_serializer = PartijIdentificatorSerializer(
833844
data=partij_identificator
834845
)
835846
partij_identificator_serializer.is_valid(raise_exception=True)
836-
partij_identificator_serializer.create(partij_identificator)
847+
partij_identificator_serializer.create(
848+
partij_identificator_serializer.validated_data
849+
)
837850

838851
return partij
839852

src/openklant/components/klantinteracties/api/tests/test_partijen.py

+24
Original file line numberDiff line numberDiff line change
@@ -1946,6 +1946,30 @@ def test_create_partij_indetificator(self):
19461946
},
19471947
)
19481948

1949+
def test_create_partij_indetificator_invalid_without_identificeerdePartij(self):
1950+
list_url = reverse("klantinteracties:partijidentificator-list")
1951+
data = {
1952+
"anderePartijIdentificator": "anderePartijIdentificator",
1953+
"partijIdentificator": {
1954+
"codeObjecttype": "natuurlijk_persoon",
1955+
"codeSoortObjectId": "bsn",
1956+
"objectId": "296648875",
1957+
"codeRegister": "brp",
1958+
},
1959+
}
1960+
1961+
response = self.client.post(list_url, data)
1962+
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
1963+
self.assertEqual(response.data["code"], "invalid")
1964+
self.assertEqual(response.data["title"], "Invalid input.")
1965+
self.assertEqual(
1966+
response.data["invalid_params"][0]["name"], "identificeerdePartij"
1967+
)
1968+
self.assertEqual(response.data["invalid_params"][0]["code"], "required")
1969+
self.assertEqual(
1970+
response.data["invalid_params"][0]["reason"], "Dit veld is vereist."
1971+
)
1972+
19491973
def test_update_partij_indetificator(self):
19501974
partij, partij2 = PartijFactory.create_batch(2)
19511975
partij_identificator = PartijIdentificatorFactory.create(

0 commit comments

Comments
 (0)