Skip to content

Commit

Permalink
[#233] Fix third level check
Browse files Browse the repository at this point in the history
  • Loading branch information
danielmursa-dev committed Jan 15, 2025
1 parent 7a976f9 commit 586913c
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2126,7 +2126,7 @@ def test_invalid_validation_partij_identificator_code_objecttype(self):
self.assertEqual(response.data["invalid_params"][0]["code"], "invalid")
self.assertEqual(
response.data["invalid_params"][0]["reason"],
"voor `codeRegister` brp zijn alleen deze waarden toegestaan: ['natuurlijk_persoon']",
"voor `codeRegister` brp zijn alleen deze waarden toegestaan: ['natuurlijk_persoon', 'overig']",
)

def test_invalid_validation_partij_identificator_code_soort_object_id(self):
Expand Down Expand Up @@ -2154,7 +2154,7 @@ def test_invalid_validation_partij_identificator_code_soort_object_id(self):
self.assertEqual(response.data["invalid_params"][0]["code"], "invalid")
self.assertEqual(
response.data["invalid_params"][0]["reason"],
"voor `codeObjecttype` natuurlijk_persoon zijn alleen deze waarden toegestaan: ['bsn']",
"voor `codeObjecttype` natuurlijk_persoon zijn alleen deze waarden toegestaan: ['bsn', 'overig']",
)

def test_invalid_validation_partij_identificator_object_id(self):
Expand Down Expand Up @@ -2217,7 +2217,7 @@ def test_valid_validation_partij_identificator(self):
"brp",
)

def test_valid_overig_validation_partij_identificator(self):
def test_valid_overig_code_register_validation_partij_identificator(self):
# Overig no validation
url = reverse("klantinteracties:partijidentificator-list")
partij = PartijFactory.create()
Expand Down Expand Up @@ -2249,6 +2249,39 @@ def test_valid_overig_validation_partij_identificator(self):
"overig",
)

def test_valid_overig_code_objecttype_validation_partij_identificator(self):
# Overig no validation
url = reverse("klantinteracties:partijidentificator-list")
partij = PartijFactory.create()
data = {
"identificeerdePartij": {"uuid": str(partij.uuid)},
"anderePartijIdentificator": "anderePartijIdentificator",
"partijIdentificator": {
"codeObjecttype": "overig",
"codeSoortObjectId": "bsn",
"objectId": 296648875,
"codeRegister": "brp",
},
}
response = self.client.post(url, data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(
response.data["partij_identificator"]["code_objecttype"],
"overig",
)
self.assertEqual(
response.data["partij_identificator"]["code_soort_object_id"],
"bsn",
)
self.assertEqual(
response.data["partij_identificator"]["object_id"],
"296648875",
)
self.assertEqual(
response.data["partij_identificator"]["code_register"],
"brp",
)


class CategorieRelatieTests(APITestCase):
def test_list_categorie_relatie(self):
Expand Down
18 changes: 12 additions & 6 deletions src/openklant/components/klantinteracties/models/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,33 @@ class PartijIdentificatorValidator:

NATUURLIJK_PERSOON = [
PartijIdentificatorCodeSoortObjectId.bsn.value,
PartijIdentificatorCodeSoortObjectId.overig.value,
]
VESTIGING = [
PartijIdentificatorCodeSoortObjectId.vestigingsnummer.value,
PartijIdentificatorCodeSoortObjectId.overig.value,
]
NIET_NATUURLIJK_PERSOON = [
PartijIdentificatorCodeSoortObjectId.rsin.value,
PartijIdentificatorCodeSoortObjectId.kvk_nummer.value,
PartijIdentificatorCodeSoortObjectId.overig.value,
]

ALLOWED_OBJECT_TYPES_FOR_CODE_OBJECTTYPE = {
PartijIdentificatorCodeObjectType.natuurlijk_persoon.value: NATUURLIJK_PERSOON,
PartijIdentificatorCodeObjectType.vestiging.value: VESTIGING,
PartijIdentificatorCodeObjectType.niet_natuurlijk_persoon.value: NIET_NATUURLIJK_PERSOON,
}

ALLOWED_OBJECT_TYPES_FOR_REGISTRIES = {
PartijIdentificatorCodeRegister.brp: {
PartijIdentificatorCodeObjectType.natuurlijk_persoon.value: NATUURLIJK_PERSOON,
PartijIdentificatorCodeObjectType.overig.value: [],
},
PartijIdentificatorCodeRegister.hr: {
PartijIdentificatorCodeObjectType.vestiging.value: VESTIGING,
PartijIdentificatorCodeObjectType.niet_natuurlijk_persoon.value: NIET_NATUURLIJK_PERSOON,
},
PartijIdentificatorCodeRegister.overig: {
PartijIdentificatorCodeObjectType.natuurlijk_persoon.value: NATUURLIJK_PERSOON,
PartijIdentificatorCodeObjectType.vestiging.value: VESTIGING,
PartijIdentificatorCodeObjectType.niet_natuurlijk_persoon.value: NIET_NATUURLIJK_PERSOON,
PartijIdentificatorCodeObjectType.overig.value: [],
},
}

Expand Down Expand Up @@ -102,7 +108,7 @@ def validate_code_soort_object_id(self) -> None:
return

if self.code_soort_object_id not in (
choices := self.ALLOWED_OBJECT_TYPES_FOR_REGISTRIES[self.code_register].get(
choices := self.ALLOWED_OBJECT_TYPES_FOR_CODE_OBJECTTYPE.get(
self.code_objecttype, []
)
):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def test_invalid_code_objecttype_not_found_in_top_level(self):
details = error.exception.message_dict
self.assertEqual(
details["partij_identificator_code_objecttype"][0],
"voor `codeRegister` brp zijn alleen deze waarden toegestaan: ['natuurlijk_persoon']",
"voor `codeRegister` brp zijn alleen deze waarden toegestaan: ['natuurlijk_persoon', 'overig']",
)

# Start section validate_code_soort_object_id
Expand Down Expand Up @@ -105,7 +105,7 @@ def test_invalid_code_soort_object_id_not_found_in_top_level(self):
details = error.exception.message_dict
self.assertEqual(
details["partij_identificator_code_soort_object_id"][0],
"voor `codeObjecttype` natuurlijk_persoon zijn alleen deze waarden toegestaan: ['bsn']",
"voor `codeObjecttype` natuurlijk_persoon zijn alleen deze waarden toegestaan: ['bsn', 'overig']",
)

# Start section validate_object_id
Expand Down

0 comments on commit 586913c

Please sign in to comment.