diff --git a/src/openklant/components/contactgegevens/api/tests/test_apis.py b/src/openklant/components/contactgegevens/api/tests/test_apis.py index 37272b19..df130f51 100644 --- a/src/openklant/components/contactgegevens/api/tests/test_apis.py +++ b/src/openklant/components/contactgegevens/api/tests/test_apis.py @@ -17,7 +17,7 @@ def test_persoon_detail(self): geslacht="m", voorvoegsel="", voornamen="John", - adres_nummeraanduiding_id="nummeraanduiding_id", + adres_nummeraanduiding_id="1234567890000001", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", @@ -30,7 +30,7 @@ def test_persoon_detail(self): ) expected_adres = { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -64,7 +64,7 @@ def test_create_persoon(self): "geslacht": "m", "voornamen": "Devin", "adres": { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -88,7 +88,7 @@ def test_create_persoon(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -105,7 +105,7 @@ def test_update_persoon(self): geslacht="m", voorvoegsel="", voornamen="Devin", - adres_nummeraanduiding_id="nummeraanduiding_id", + adres_nummeraanduiding_id="1234567890000001", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", @@ -132,7 +132,7 @@ def test_update_persoon(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -149,7 +149,7 @@ def test_update_persoon(self): "voorvoegsel": "changed", "voornamen": "changed", "adres": { - "nummeraanduidingId": "changed", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -169,7 +169,7 @@ def test_update_persoon(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "changed", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -186,7 +186,7 @@ def test_update_partial_persoon(self): geslacht="m", voorvoegsel="", voornamen="Devin", - adres_nummeraanduiding_id="nummeraanduiding_id", + adres_nummeraanduiding_id="1234567890000001", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", @@ -213,7 +213,7 @@ def test_update_partial_persoon(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -237,7 +237,7 @@ def test_update_partial_persoon(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -266,7 +266,7 @@ def test_organisatie_detail(self): handelsnaam="Devin Townsend", oprichtingsdatum="1980-02-23", opheffingsdatum="2020-09-05", - adres_nummeraanduiding_id="nummeraanduiding_id", + adres_nummeraanduiding_id="1234567890000001", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", @@ -279,7 +279,7 @@ def test_organisatie_detail(self): ) expected_adres = { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -308,7 +308,7 @@ def test_create_organisatie(self): "handelsnaam": "Devin Townsend", "oprichtingsdatum": "1996-03-12", "adres": { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -329,7 +329,7 @@ def test_create_organisatie(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -343,7 +343,7 @@ def test_update_organisatie(self): handelsnaam="Devin Townsend", oprichtingsdatum="1996-03-12", opheffingsdatum=None, - adres_nummeraanduiding_id="nummeraanduiding_id", + adres_nummeraanduiding_id="1234567890000001", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", @@ -367,7 +367,7 @@ def test_update_organisatie(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -381,7 +381,7 @@ def test_update_organisatie(self): "oprichtingsdatum": "1996-03-13", "opheffingsdatum": "2023-11-22", "adres": { - "nummeraanduidingId": "changed", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -397,7 +397,7 @@ def test_update_organisatie(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "changed", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -411,7 +411,7 @@ def test_update_partial_organisatie(self): handelsnaam="Devin Townsend", oprichtingsdatum="1996-03-12", opheffingsdatum=None, - adres_nummeraanduiding_id="nummeraanduiding_id", + adres_nummeraanduiding_id="1234567890000001", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", @@ -435,7 +435,7 @@ def test_update_partial_organisatie(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -457,7 +457,7 @@ def test_update_partial_organisatie(self): self.assertEqual( data["adres"], { - "nummeraanduidingId": "nummeraanduiding_id", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", diff --git a/src/openklant/components/contactgegevens/migrations/0005_alter_organisatie_adres_nummeraanduiding_id_and_more.py b/src/openklant/components/contactgegevens/migrations/0005_alter_organisatie_adres_nummeraanduiding_id_and_more.py new file mode 100644 index 00000000..cdb97b09 --- /dev/null +++ b/src/openklant/components/contactgegevens/migrations/0005_alter_organisatie_adres_nummeraanduiding_id_and_more.py @@ -0,0 +1,89 @@ +# Generated by Django 4.2.17 on 2025-01-28 09:10 + +import logging +import openklant.utils.validators +from django.core.exceptions import ValidationError +from django.db import IntegrityError +from django.db import migrations, models +from openklant.utils.validators import validate_bag_id + +logger = logging.getLogger(__name__) + + +def _check_records(records): + total_failed_records = 0 + for record in records: + if record.adres_nummeraanduiding_id: + try: + validate_bag_id(record.adres_nummeraanduiding_id) + except ValidationError: + logger.warning( + "%s(pk=%s, uuid=%s) Field: 'adres_nummeraanduiding_id'. Invalid BAG ID: %s", + type(record).__qualname__, + record.pk, + record.uuid, + record.adres_nummeraanduiding_id, + ) + total_failed_records += 1 + return total_failed_records + + +def _check_records_field_length(apps, schema_editor): + Organisatie = apps.get_model("contactgegevens", "Organisatie") + Persoon = apps.get_model("contactgegevens", "Persoon") + + for model in [Organisatie, Persoon]: + records = model.objects.all() + if total_failed_records := _check_records(records): + raise IntegrityError( + "The migration cannot proceed due to %s records that don't comply with the %s model's requirements. " + "Possible data inconsistency or mapping error." + % (total_failed_records, model.__qualname__) + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "contactgegevens", + "0004_alter_organisatie_adres_land_alter_organisatie_land_and_more", + ), + ] + + operations = [ + migrations.RunPython( + code=_check_records_field_length, + reverse_code=migrations.RunPython.noop, + ), + migrations.AlterField( + model_name="organisatie", + name="adres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="persoon", + name="adres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + ] diff --git a/src/openklant/components/contactgegevens/mixins.py b/src/openklant/components/contactgegevens/mixins.py index 3c444930..c9fa5764 100644 --- a/src/openklant/components/contactgegevens/mixins.py +++ b/src/openklant/components/contactgegevens/mixins.py @@ -4,7 +4,7 @@ from vng_api_common.descriptors import GegevensGroepType -from openklant.utils.validators import validate_country +from openklant.utils.validators import validate_bag_id, validate_country class AdresMixin(models.Model): @@ -13,7 +13,8 @@ class AdresMixin(models.Model): help_text=_( "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." ), - max_length=255, + max_length=16, + validators=[validate_bag_id], blank=True, ) adres_adresregel1 = models.CharField( diff --git a/src/openklant/components/contactgegevens/openapi.yaml b/src/openklant/components/contactgegevens/openapi.yaml index 46b335c9..060d9610 100644 --- a/src/openklant/components/contactgegevens/openapi.yaml +++ b/src/openklant/components/contactgegevens/openapi.yaml @@ -382,7 +382,8 @@ components: type: string description: Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen. - maxLength: 255 + pattern: ^[0-9]{16}$ + maxLength: 16 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -642,7 +643,8 @@ components: type: string description: Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen. - maxLength: 255 + pattern: ^[0-9]{16}$ + maxLength: 16 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie diff --git a/src/openklant/components/contactgegevens/tests/test_migrations.py b/src/openklant/components/contactgegevens/tests/test_migrations.py index 06e73f95..379cef4d 100644 --- a/src/openklant/components/contactgegevens/tests/test_migrations.py +++ b/src/openklant/components/contactgegevens/tests/test_migrations.py @@ -193,3 +193,142 @@ def test_ko_migration_persoon_model_wrong_code(self): self.assertNotEqual(persoon1.adres_land, "6030") self.assertNotEqual(persoon2.land, "5001") self.assertNotEqual(persoon2.adres_land, "5001") + + +class TestValidateBagId(BaseMigrationTest): + app = "contactgegevens" + migrate_from = "0004_alter_organisatie_adres_land_alter_organisatie_land_and_more" + migrate_to = "0005_alter_organisatie_adres_nummeraanduiding_id_and_more" + + def test_ok_migration_organisatie_model(self): + + Organisatie = self.old_app_state.get_model("contactgegevens", "Organisatie") + + Organisatie.objects.create(adres_nummeraanduiding_id="1234567890000001") + + self._perform_migration() + + Organisatie = self.apps.get_model("contactgegevens", "Organisatie") + + records = Organisatie.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "1234567890000001") + + def test_ok_migration_organisatie_model_empty_value(self): + + Organisatie = self.old_app_state.get_model("contactgegevens", "Organisatie") + + Organisatie.objects.create(adres_nummeraanduiding_id="") + + self._perform_migration() + + Organisatie = self.apps.get_model("contactgegevens", "Organisatie") + + records = Organisatie.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "") + + def test_ko_migration_organisatie_model_wrong_code(self): + + Organisatie = self.old_app_state.get_model("contactgegevens", "Organisatie") + org1 = Organisatie.objects.create(adres_nummeraanduiding_id="123456") + + with self.assertRaises(IntegrityError) as error: + self._perform_migration() + + self.assertEqual( + ( + "The migration cannot proceed due to 1 records that don't comply with the " + "Organisatie model's requirements. Possible data inconsistency or mapping error." + ), + str(error.exception), + ) + + records = Organisatie.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "123456") + + # Update manually + org1 = records.get(pk=records[0].pk) + org1.adres_nummeraanduiding_id = "1234567890000001" + org1.save() + + # Re-Run the migration + self._perform_migration() + Organisatie = self.apps.get_model("contactgegevens", "Organisatie") + + records = Organisatie.objects.all() + org1 = records.get(pk=records[0].pk) + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "1234567890000001") + self.assertNotEqual(records[0].adres_nummeraanduiding_id, "123456") + + def test_ok_migrate_persoon_model(self): + + Persoon = self.old_app_state.get_model("contactgegevens", "Persoon") + + Persoon.objects.create( + adres_nummeraanduiding_id="1234567890000001", geboortedatum="1980-02-23" + ) + + self._perform_migration() + Persoon = self.apps.get_model("contactgegevens", "Persoon") + + records = Persoon.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "1234567890000001") + + def test_ok_migration_persoon_model_empty_value(self): + + Persoon = self.old_app_state.get_model("contactgegevens", "Persoon") + + Persoon.objects.create(adres_nummeraanduiding_id="", geboortedatum="1980-02-23") + + self._perform_migration() + + Persoon = self.apps.get_model("contactgegevens", "Persoon") + + records = Persoon.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "") + + def test_ko_migration_persoon_model_wrong_code(self): + + Persoon = self.old_app_state.get_model("contactgegevens", "Persoon") + persoon1 = Persoon.objects.create( + adres_nummeraanduiding_id="123456", geboortedatum="1980-02-23" + ) + + with self.assertRaises(IntegrityError) as error: + self._perform_migration() + + self.assertEqual( + ( + "The migration cannot proceed due to 1 records that don't comply with the " + "Persoon model's requirements. Possible data inconsistency or mapping error." + ), + str(error.exception), + ) + + records = Persoon.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "123456") + + # Update manually + persoon1 = records.get(pk=records[0].pk) + persoon1.adres_nummeraanduiding_id = "1234567890000001" + persoon1.save() + + # Re-Run the migration + self._perform_migration() + Persoon = self.apps.get_model("contactgegevens", "Persoon") + + records = Persoon.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].adres_nummeraanduiding_id, "1234567890000001") + self.assertNotEqual(records[0].adres_nummeraanduiding_id, "123456") diff --git a/src/openklant/components/klantinteracties/api/tests/factories.py b/src/openklant/components/klantinteracties/api/tests/factories.py index cf2b7981..33648b70 100644 --- a/src/openklant/components/klantinteracties/api/tests/factories.py +++ b/src/openklant/components/klantinteracties/api/tests/factories.py @@ -13,7 +13,7 @@ class KlantContactDataFactory(factory.DictFactory): class BezoekAdresDataFactory(factory.DictFactory): - nummeraanduidingId = "4a282b5c-16d7-401d-9737-28e98c865ab2" + nummeraanduidingId = "1234567890000001" adresregel1 = "adres1" adresregel2 = "adres2" adresregel3 = "adres3" @@ -21,7 +21,7 @@ class BezoekAdresDataFactory(factory.DictFactory): class CorrespondentieAdresDataFactory(factory.DictFactory): - nummeraanduidingId = "c06918d9-899b-4d98-a10d-08436ebc6c20" + nummeraanduidingId = "1234567890000002" adresregel1 = "adres1" adresregel2 = "adres2" adresregel3 = "adres3" diff --git a/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py b/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py index e2c64e64..933ab11a 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py +++ b/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py @@ -410,14 +410,14 @@ def test_create_betrokkene_with_partij(self): "hadKlantcontact": {"uuid": str(klantcontact.uuid)}, "wasPartij": {"uuid": str(partij.uuid)}, "bezoekadres": { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -444,7 +444,7 @@ def test_create_betrokkene_with_partij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -454,7 +454,7 @@ def test_create_betrokkene_with_partij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -483,14 +483,14 @@ def test_create_betrokkene(self): "hadKlantcontact": {"uuid": str(klantcontact.uuid)}, "wasPartij": None, "bezoekadres": { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -517,7 +517,7 @@ def test_create_betrokkene(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -527,7 +527,7 @@ def test_create_betrokkene(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -555,12 +555,12 @@ def test_update_betrokkene(self): betrokkene = BetrokkeneFactory.create( klantcontact=klantcontact, partij=partij, - bezoekadres_nummeraanduiding_id="4a282b5c-16d7-401d-9737-28e98c865ab2", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="c06918d9-899b-4d98-a10d-08436ebc6c20", + correspondentieadres_nummeraanduiding_id="1234567890000002", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -584,7 +584,7 @@ def test_update_betrokkene(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -594,7 +594,7 @@ def test_update_betrokkene(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -620,14 +620,14 @@ def test_update_betrokkene(self): "wasPartij": {"uuid": str(partij2.uuid)}, "hadKlantcontact": {"uuid": str(klantcontact2.uuid)}, "bezoekadres": { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -654,7 +654,7 @@ def test_update_betrokkene(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -664,7 +664,7 @@ def test_update_betrokkene(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -692,12 +692,12 @@ def test_partial_update_betrokkene(self): betrokkene = BetrokkeneFactory.create( klantcontact=klantcontact, partij=partij, - bezoekadres_nummeraanduiding_id="4a282b5c-16d7-401d-9737-28e98c865ab2", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="c06918d9-899b-4d98-a10d-08436ebc6c20", + correspondentieadres_nummeraanduiding_id="1234567890000002", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -721,7 +721,7 @@ def test_partial_update_betrokkene(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -731,7 +731,7 @@ def test_partial_update_betrokkene(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -755,7 +755,7 @@ def test_partial_update_betrokkene(self): data = { "bezoekadres": { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -771,7 +771,7 @@ def test_partial_update_betrokkene(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -781,7 +781,7 @@ def test_partial_update_betrokkene(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1574,14 +1574,14 @@ def test_create_success(self): "wasPartij": None, "digitaleAdressen": [], "bezoekadres": { - "nummeraanduidingId": "4a282b5c-16d7-401d-9737-28e98c865ab2", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "c06918d9-899b-4d98-a10d-08436ebc6c20", + "nummeraanduidingId": "1234567890000002", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", diff --git a/src/openklant/components/klantinteracties/api/tests/test_partijen.py b/src/openklant/components/klantinteracties/api/tests/test_partijen.py index bb6e4d1b..5f36e120 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_partijen.py +++ b/src/openklant/components/klantinteracties/api/tests/test_partijen.py @@ -110,14 +110,14 @@ def test_create_partij(self): "voorkeurstaal": "ndl", "indicatieActief": True, "bezoekadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -156,7 +156,7 @@ def test_create_partij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -166,7 +166,7 @@ def test_create_partij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -212,7 +212,7 @@ def test_create_partij(self): self.assertEqual( response_data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -222,7 +222,7 @@ def test_create_partij(self): self.assertEqual( response_data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -391,14 +391,14 @@ def test_create_persoon(self): "voorkeurstaal": "ndl", "indicatieActief": True, "bezoekadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -434,7 +434,7 @@ def test_create_persoon(self): self.assertEqual( response_data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -444,7 +444,7 @@ def test_create_persoon(self): self.assertEqual( response_data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -483,14 +483,14 @@ def test_create_organisatie(self): "voorkeurstaal": "ndl", "indicatieActief": True, "bezoekadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -522,7 +522,7 @@ def test_create_organisatie(self): self.assertEqual( response_data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -532,7 +532,7 @@ def test_create_organisatie(self): self.assertEqual( response_data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -558,14 +558,14 @@ def test_create_contactpersoon(self): "voorkeurstaal": "ndl", "indicatieActief": True, "bezoekadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -604,7 +604,7 @@ def test_create_contactpersoon(self): self.assertEqual( response_data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -614,7 +614,7 @@ def test_create_contactpersoon(self): self.assertEqual( response_data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -648,12 +648,12 @@ def test_update_partij(self): indicatie_geheimhouding=True, voorkeurstaal="ndl", indicatie_actief=True, - bezoekadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + correspondentieadres_nummeraanduiding_id="1234567890000001", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -708,7 +708,7 @@ def test_update_partij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -718,7 +718,7 @@ def test_update_partij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -750,14 +750,14 @@ def test_update_partij(self): "voorkeurstaal": "ger", "indicatieActief": False, "bezoekadres": { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -810,7 +810,7 @@ def test_update_partij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -820,7 +820,7 @@ def test_update_partij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -928,14 +928,14 @@ def test_update_partij(self): "voorkeurstaal": "ger", "indicatieActief": False, "bezoekadres": { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -960,7 +960,7 @@ def test_update_partij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -970,7 +970,7 @@ def test_update_partij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -988,12 +988,12 @@ def test_update_partij_persoon(self): indicatie_geheimhouding=True, voorkeurstaal="ndl", indicatie_actief=True, - bezoekadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + correspondentieadres_nummeraanduiding_id="1234567890000001", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1025,7 +1025,7 @@ def test_update_partij_persoon(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1035,7 +1035,7 @@ def test_update_partij_persoon(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1067,14 +1067,14 @@ def test_update_partij_persoon(self): "voorkeurstaal": "ger", "indicatieActief": False, "bezoekadres": { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1107,7 +1107,7 @@ def test_update_partij_persoon(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1117,7 +1117,7 @@ def test_update_partij_persoon(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1147,12 +1147,12 @@ def test_update_partij_organisatie(self): indicatie_geheimhouding=True, voorkeurstaal="ndl", indicatie_actief=True, - bezoekadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + correspondentieadres_nummeraanduiding_id="1234567890000001", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1178,7 +1178,7 @@ def test_update_partij_organisatie(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1188,7 +1188,7 @@ def test_update_partij_organisatie(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1209,14 +1209,14 @@ def test_update_partij_organisatie(self): "voorkeurstaal": "ger", "indicatieActief": False, "bezoekadres": { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1244,7 +1244,7 @@ def test_update_partij_organisatie(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1254,7 +1254,7 @@ def test_update_partij_organisatie(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1276,12 +1276,12 @@ def test_update_partij_contactpersoon(self): indicatie_geheimhouding=True, voorkeurstaal="ndl", indicatie_actief=True, - bezoekadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + correspondentieadres_nummeraanduiding_id="1234567890000001", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1323,7 +1323,7 @@ def test_update_partij_contactpersoon(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1333,7 +1333,7 @@ def test_update_partij_contactpersoon(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1369,14 +1369,14 @@ def test_update_partij_contactpersoon(self): "voorkeurstaal": "ger", "indicatieActief": False, "bezoekadres": { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1410,7 +1410,7 @@ def test_update_partij_contactpersoon(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1420,7 +1420,7 @@ def test_update_partij_contactpersoon(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1454,12 +1454,12 @@ def test_update_partij_contactpersoon_to_persoon(self): indicatie_geheimhouding=True, voorkeurstaal="ndl", indicatie_actief=True, - bezoekadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + correspondentieadres_nummeraanduiding_id="1234567890000001", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1493,7 +1493,7 @@ def test_update_partij_contactpersoon_to_persoon(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1503,7 +1503,7 @@ def test_update_partij_contactpersoon_to_persoon(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1539,14 +1539,14 @@ def test_update_partij_contactpersoon_to_persoon(self): "voorkeurstaal": "ger", "indicatieActief": False, "bezoekadres": { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "NL", }, "correspondentieadres": { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1579,7 +1579,7 @@ def test_update_partij_contactpersoon_to_persoon(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "f78sd8f-uh45-34km-2o3n-aasdasdasc9g", + "nummeraanduidingId": "1234567890000002", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1589,7 +1589,7 @@ def test_update_partij_contactpersoon_to_persoon(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "sd76f7sd-j4nr-a9s8-83ec-sad89f79a7sd", + "nummeraanduidingId": "1234567890000003", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1619,12 +1619,12 @@ def test_partial_update_parij(self): indicatie_geheimhouding=True, voorkeurstaal="ndl", indicatie_actief=True, - bezoekadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + bezoekadres_nummeraanduiding_id="1234567890000001", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", - correspondentieadres_nummeraanduiding_id="095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + correspondentieadres_nummeraanduiding_id="1234567890000001", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1662,7 +1662,7 @@ def test_partial_update_parij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1672,7 +1672,7 @@ def test_partial_update_parij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1719,7 +1719,7 @@ def test_partial_update_parij(self): self.assertEqual( data["bezoekadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1729,7 +1729,7 @@ def test_partial_update_parij(self): self.assertEqual( data["correspondentieadres"], { - "nummeraanduidingId": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", + "nummeraanduidingId": "1234567890000001", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", diff --git a/src/openklant/components/klantinteracties/migrations/0027_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py b/src/openklant/components/klantinteracties/migrations/0027_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py new file mode 100644 index 00000000..1f8c0cdf --- /dev/null +++ b/src/openklant/components/klantinteracties/migrations/0027_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py @@ -0,0 +1,126 @@ +# Generated by Django 4.2.17 on 2025-01-28 09:10 + +import logging +import openklant.utils.validators +from django.core.exceptions import ValidationError +from django.db import IntegrityError +from django.db import migrations, models +from openklant.utils.validators import validate_bag_id + +logger = logging.getLogger(__name__) + + +def _check_records(records): + total_failed_records = 0 + for record in records: + record_failed = False + for field_name in ( + "bezoekadres_nummeraanduiding_id", + "correspondentieadres_nummeraanduiding_id", + ): + field_value = getattr(record, field_name, None) + if field_value: + try: + validate_bag_id(field_value) + except ValidationError: + logger.warning( + "%s(pk=%s, uuid=%s) Field: '%s'. Invalid BAG ID: %s", + type(record).__qualname__, + record.pk, + record.uuid, + field_name, + field_value, + ) + record_failed = True + + if record_failed: + total_failed_records += 1 + return total_failed_records + + +def _check_records_field_length(apps, schema_editor): + Betrokkene = apps.get_model("klantinteracties", "Betrokkene") + Partij = apps.get_model("klantinteracties", "Partij") + + for model in [Betrokkene, Partij]: + records = model.objects.all() + if total_failed_records := _check_records(records): + raise IntegrityError( + "The migration cannot proceed due to %s records that don't comply with the %s model's requirements. " + "Possible data inconsistency or mapping error." + % (total_failed_records, model.__qualname__) + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("klantinteracties", "0026_alter_betrokkene_bezoekadres_land_and_more"), + ] + + operations = [ + migrations.RunPython( + code=_check_records_field_length, + reverse_code=migrations.RunPython.noop, + ), + migrations.AlterField( + model_name="betrokkene", + name="bezoekadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="betrokkene", + name="correspondentieadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="partij", + name="bezoekadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="partij", + name="correspondentieadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + ] diff --git a/src/openklant/components/klantinteracties/models/mixins.py b/src/openklant/components/klantinteracties/models/mixins.py index 1d73c018..a2e13582 100644 --- a/src/openklant/components/klantinteracties/models/mixins.py +++ b/src/openklant/components/klantinteracties/models/mixins.py @@ -4,17 +4,17 @@ from vng_api_common.descriptors import GegevensGroepType -from openklant.utils.validators import validate_country +from openklant.utils.validators import validate_bag_id, validate_country class BezoekadresMixin(models.Model): - # TODO: Check if this is correct. bezoekadres_nummeraanduiding_id = models.CharField( _("nummeraanduiding ID"), help_text=_( "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." ), - max_length=255, + max_length=16, + validators=[validate_bag_id], blank=True, ) bezoekadres_adresregel1 = models.CharField( @@ -76,13 +76,13 @@ class Meta: class CorrespondentieadresMixin(models.Model): - # TODO: Check if this is correct. correspondentieadres_nummeraanduiding_id = models.CharField( _("nummeraanduiding ID"), help_text=_( "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." ), - max_length=255, + max_length=16, + validators=[validate_bag_id], blank=True, ) correspondentieadres_adresregel1 = models.CharField( diff --git a/src/openklant/components/klantinteracties/openapi.yaml b/src/openklant/components/klantinteracties/openapi.yaml index 9e4b164d..7d19dc6f 100644 --- a/src/openklant/components/klantinteracties/openapi.yaml +++ b/src/openklant/components/klantinteracties/openapi.yaml @@ -3204,7 +3204,8 @@ components: type: string description: Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen. - maxLength: 255 + pattern: ^[0-9]{16}$ + maxLength: 16 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -3334,7 +3335,8 @@ components: type: string description: Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen. - maxLength: 255 + pattern: ^[0-9]{16}$ + maxLength: 16 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -4629,7 +4631,8 @@ components: type: string description: Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen. - maxLength: 255 + pattern: ^[0-9]{16}$ + maxLength: 16 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -4658,7 +4661,8 @@ components: type: string description: Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen. - maxLength: 255 + pattern: ^[0-9]{16}$ + maxLength: 16 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie diff --git a/src/openklant/components/klantinteracties/tests/test_migrations.py b/src/openklant/components/klantinteracties/tests/test_migrations.py index 512e89b5..0db64006 100644 --- a/src/openklant/components/klantinteracties/tests/test_migrations.py +++ b/src/openklant/components/klantinteracties/tests/test_migrations.py @@ -246,3 +246,194 @@ def test_ko_migration_partij_model_wrong_code(self): self.assertEqual(partij1.correspondentieadres_land, "NL") self.assertEqual(partij2.bezoekadres_land, "CA") self.assertEqual(partij2.correspondentieadres_land, "CA") + + +class TestValidateBagId(BaseMigrationTest): + app = "klantinteracties" + migrate_from = "0026_alter_betrokkene_bezoekadres_land_and_more" + migrate_to = "0027_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more" + + def test_ok_migration_betrokkene_model(self): + + Betrokkene = self.old_app_state.get_model("klantinteracties", "Betrokkene") + Klantcontact = self.old_app_state.get_model("klantinteracties", "Klantcontact") + + Betrokkene.objects.create( + partij=None, + klantcontact=Klantcontact.objects.create(vertrouwelijk=False), + initiator=False, + bezoekadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_nummeraanduiding_id="1234567890000002", + ) + + self._perform_migration() + + Betrokkene = self.apps.get_model("klantinteracties", "Betrokkene") + + records = Betrokkene.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "1234567890000001") + self.assertEqual( + records[0].correspondentieadres_nummeraanduiding_id, "1234567890000002" + ) + + def test_ok_migration_betrokkene_model_empty_value(self): + + Betrokkene = self.old_app_state.get_model("klantinteracties", "Betrokkene") + Klantcontact = self.old_app_state.get_model("klantinteracties", "Klantcontact") + + Betrokkene.objects.create( + partij=None, + klantcontact=Klantcontact.objects.create(vertrouwelijk=False), + initiator=False, + bezoekadres_nummeraanduiding_id="", + correspondentieadres_nummeraanduiding_id="", + ) + + self._perform_migration() + + Betrokkene = self.apps.get_model("klantinteracties", "Betrokkene") + + records = Betrokkene.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "") + self.assertEqual(records[0].correspondentieadres_nummeraanduiding_id, "") + + def test_ko_migration_betrokkene_model_wrong_code(self): + + Betrokkene = self.old_app_state.get_model("klantinteracties", "Betrokkene") + Klantcontact = self.old_app_state.get_model("klantinteracties", "Klantcontact") + + Betrokkene.objects.create( + partij=None, + klantcontact=Klantcontact.objects.create(vertrouwelijk=False), + initiator=False, + bezoekadres_nummeraanduiding_id="123456", + correspondentieadres_nummeraanduiding_id="789", + ) + + with self.assertRaises(IntegrityError) as error: + self._perform_migration() + + self.assertEqual( + ( + "The migration cannot proceed due to 1 records that don't comply with the " + "Betrokkene model's requirements. Possible data inconsistency or mapping error." + ), + str(error.exception), + ) + + records = Betrokkene.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "123456") + self.assertEqual(records[0].correspondentieadres_nummeraanduiding_id, "789") + + # Update manually + betrokken = records.get(pk=records[0].pk) + betrokken.bezoekadres_nummeraanduiding_id = "1234567890000001" + betrokken.correspondentieadres_nummeraanduiding_id = "1234567890000002" + betrokken.save() + + # Re-Run the migration + self._perform_migration() + + Betrokkene = self.apps.get_model("klantinteracties", "Betrokkene") + + records = Betrokkene.objects.all() + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "1234567890000001") + self.assertEqual( + records[0].correspondentieadres_nummeraanduiding_id, "1234567890000002" + ) + self.assertNotEqual(records[0].bezoekadres_nummeraanduiding_id, "123456") + self.assertNotEqual(records[0].correspondentieadres_nummeraanduiding_id, "789") + + def test_ok_migration_partij_model(self): + + Partij = self.old_app_state.get_model("klantinteracties", "Partij") + + Partij.objects.create( + indicatie_actief=True, + bezoekadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_nummeraanduiding_id="1234567890000002", + ) + + self._perform_migration() + + Partij = self.apps.get_model("klantinteracties", "Partij") + + records = Partij.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "1234567890000001") + self.assertEqual( + records[0].correspondentieadres_nummeraanduiding_id, "1234567890000002" + ) + + def test_ok_migration_partij_model_empty_value(self): + + Partij = self.old_app_state.get_model("klantinteracties", "Partij") + + Partij.objects.create( + indicatie_actief=True, + bezoekadres_nummeraanduiding_id="", + correspondentieadres_nummeraanduiding_id="", + ) + + self._perform_migration() + + Partij = self.apps.get_model("klantinteracties", "Partij") + + records = Partij.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "") + self.assertEqual(records[0].correspondentieadres_nummeraanduiding_id, "") + + def test_ko_migration_partij_model_wrong_code(self): + + Partij = self.old_app_state.get_model("klantinteracties", "Partij") + + Partij.objects.create( + indicatie_actief=True, + bezoekadres_nummeraanduiding_id="ABC", + correspondentieadres_nummeraanduiding_id="DEF", + ) + + with self.assertRaises(IntegrityError) as error: + self._perform_migration() + + self.assertEqual( + ( + "The migration cannot proceed due to 1 records that don't comply with the " + "Partij model's requirements. Possible data inconsistency or mapping error." + ), + str(error.exception), + ) + + records = Partij.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "ABC") + self.assertEqual(records[0].correspondentieadres_nummeraanduiding_id, "DEF") + + # Update manually + partij1 = records.get(pk=records[0].pk) + partij1.bezoekadres_nummeraanduiding_id = "1234567890000001" + partij1.correspondentieadres_nummeraanduiding_id = "1234567890000002" + partij1.save() + + # Re-Run the migration + self._perform_migration() + + Partij = self.apps.get_model("klantinteracties", "Partij") + + records = Partij.objects.all() + + self.assertEqual(records.count(), 1) + self.assertEqual(records[0].bezoekadres_nummeraanduiding_id, "1234567890000001") + self.assertEqual( + records[0].correspondentieadres_nummeraanduiding_id, "1234567890000002" + ) + self.assertNotEqual(records[0].bezoekadres_nummeraanduiding_id, "ABC") + self.assertNotEqual(records[0].correspondentieadres_nummeraanduiding_id, "DEF") diff --git a/src/openklant/fixtures/contactgegevens.json b/src/openklant/fixtures/contactgegevens.json index ebdbc6a6..a2833fcd 100644 --- a/src/openklant/fixtures/contactgegevens.json +++ b/src/openklant/fixtures/contactgegevens.json @@ -3,7 +3,7 @@ "model": "contactgegevens.organisatie", "pk": 1, "fields": { - "adres_nummeraanduiding_id": "e25988cd-daa7-43f7-ba8b-f226c5a3ec76", + "adres_nummeraanduiding_id": "1234567890000001", "adres_adresregel1": "Keizersgracht 117", "adres_adresregel2": "1015 CJ Amsterdam", "adres_adresregel3": "Noord-Holland", @@ -19,7 +19,7 @@ "model": "contactgegevens.persoon", "pk": 1, "fields": { - "adres_nummeraanduiding_id": "ed28d31b-8831-48c4-bf5b-ec312d149f72", + "adres_nummeraanduiding_id": "1234567890000002", "adres_adresregel1": "Keizersgracht 117", "adres_adresregel2": "1015 CJ Amsterdam", "adres_adresregel3": "Noord-Holland", diff --git a/src/openklant/fixtures/klantinteracties.json b/src/openklant/fixtures/klantinteracties.json index 6aa0b4f5..8c0b7be7 100644 --- a/src/openklant/fixtures/klantinteracties.json +++ b/src/openklant/fixtures/klantinteracties.json @@ -151,7 +151,7 @@ "model": "klantinteracties.betrokkene", "pk": 3, "fields": { - "bezoekadres_nummeraanduiding_id": "ccbcee63-fb73-4c8b-9601-9d51d120a5b8", + "bezoekadres_nummeraanduiding_id": "1234567890000001", "bezoekadres_adresregel1": "Keizersgracht 117", "bezoekadres_adresregel2": "1015 CJ Amsterdam", "bezoekadres_adresregel3": "", @@ -227,7 +227,7 @@ "model": "klantinteracties.partij", "pk": 2, "fields": { - "bezoekadres_nummeraanduiding_id": "ae758bf9-6a34-4adc-8482-147738c9509d", + "bezoekadres_nummeraanduiding_id": "1234567890000002", "bezoekadres_adresregel1": "Keizersgracht 117", "bezoekadres_adresregel2": "1015 CJ Amsterdam", "bezoekadres_adresregel3": "", diff --git a/src/openklant/utils/tests/test_validators.py b/src/openklant/utils/tests/test_validators.py index bdc158e4..ca86abba 100644 --- a/src/openklant/utils/tests/test_validators.py +++ b/src/openklant/utils/tests/test_validators.py @@ -2,6 +2,7 @@ from django.test import TestCase from openklant.utils.validators import ( + validate_bag_id, validate_charfield_entry, validate_country, validate_iban, @@ -149,6 +150,31 @@ def test_validate_iban(self): self.assertIsNone(validate_iban("ab129")) self.assertIsNone(validate_iban("ab12aaaaaaaaaa")) + def test_validate_bag_id(self): + """ + Test Basisregistratie Adressen en Gebouwen ID + """ + invalid_ids = [ + "", + "1", + "1000 AAA", + "1000AAA", + "000000000000000", + "AAAAAAAAAAAAAAAA", + "1234-1234-1234-1234", + "123A123A123A123A", + ] + for bag_id in invalid_ids: + self.assertRaisesMessage( + ValidationError, + "Ongeldige nummeraanduiding BAG-ID", + validate_bag_id, + bag_id, + ) + + validate_bag_id("1234567890000001") + validate_bag_id("1111111111111111") + def test_validate_country(self): invalid_codes = [ "", diff --git a/src/openklant/utils/validators.py b/src/openklant/utils/validators.py index c2780adc..32ba41ee 100644 --- a/src/openklant/utils/validators.py +++ b/src/openklant/utils/validators.py @@ -70,3 +70,7 @@ def __call__(self, value): validate_no_space = CustomRegexValidator( regex="^[\S]+$", message=_("Geen spaties toegestaan") # noqa ) + +validate_bag_id = CustomRegexValidator( + regex="^[0-9]{16}$", message=_("Ongeldige nummeraanduiding BAG-ID") +)