Skip to content

Commit

Permalink
Merge pull request #270 from maykinmedia/issue/#232-add-soort-digitaa…
Browse files Browse the repository at this point in the history
…l-adres-enum

[#232] use an enum for `soortDigitaalAdres`
  • Loading branch information
stevenbal authored Oct 18, 2024
2 parents cd377ad + 7a10195 commit 8edfb3e
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from rest_framework import status
from vng_api_common.tests import reverse

from openklant.components.klantinteracties.constants import SoortDigitaalAdres
from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import (
DigitaalAdresFactory,
)
Expand Down Expand Up @@ -54,8 +55,8 @@ def test_create_digitaal_adres(self):
data = {
"verstrektDoorBetrokkene": None,
"verstrektDoorPartij": None,
"soortDigitaalAdres": "soortDigitaalAdres",
"adres": "adres",
"soortDigitaalAdres": SoortDigitaalAdres.email,
"adres": "foobar@example.com",
"omschrijving": "omschrijving",
}

Expand All @@ -65,9 +66,9 @@ def test_create_digitaal_adres(self):
data = response.json()

self.assertIsNone(data["verstrektDoorBetrokkene"])
self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres")
self.assertEqual(data["soortDigitaalAdres"], SoortDigitaalAdres.email)
self.assertEqual(data["verstrektDoorPartij"], None)
self.assertEqual(data["adres"], "adres")
self.assertEqual(data["adres"], "foobar@example.com")
self.assertEqual(data["omschrijving"], "omschrijving")

with self.subTest("with_betrokkene_and_partij"):
Expand All @@ -85,8 +86,8 @@ def test_create_digitaal_adres(self):
data["verstrektDoorBetrokkene"]["uuid"], str(betrokkene.uuid)
)
self.assertEqual(data["verstrektDoorPartij"]["uuid"], str(partij.uuid))
self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres")
self.assertEqual(data["adres"], "adres")
self.assertEqual(data["soortDigitaalAdres"], SoortDigitaalAdres.email)
self.assertEqual(data["adres"], "foobar@example.com")
self.assertEqual(data["omschrijving"], "omschrijving")

def test_update_digitaal_adres(self):
Expand All @@ -95,8 +96,8 @@ def test_update_digitaal_adres(self):
digitaal_adres = DigitaalAdresFactory.create(
betrokkene=betrokkene,
partij=partij2,
soort_digitaal_adres="soortDigitaalAdres",
adres="adres",
soort_digitaal_adres=SoortDigitaalAdres.email,
adres="foobar@example.com",
omschrijving="omschrijving",
)
detail_url = reverse(
Expand All @@ -108,15 +109,15 @@ def test_update_digitaal_adres(self):

self.assertEqual(data["verstrektDoorBetrokkene"]["uuid"], str(betrokkene.uuid))
self.assertEqual(data["verstrektDoorPartij"]["uuid"], str(partij2.uuid))
self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres")
self.assertEqual(data["adres"], "adres")
self.assertEqual(data["soortDigitaalAdres"], SoortDigitaalAdres.email)
self.assertEqual(data["adres"], "foobar@example.com")
self.assertEqual(data["omschrijving"], "omschrijving")

data = {
"verstrektDoorBetrokkene": {"uuid": str(betrokkene2.uuid)},
"verstrektDoorPartij": {"uuid": str(partij.uuid)},
"soortDigitaalAdres": "changed",
"adres": "changed",
"soortDigitaalAdres": SoortDigitaalAdres.telefoonnummer,
"adres": "0721434543",
"omschrijving": "changed",
}

Expand All @@ -128,16 +129,16 @@ def test_update_digitaal_adres(self):

self.assertEqual(data["verstrektDoorBetrokkene"]["uuid"], str(betrokkene2.uuid))
self.assertEqual(data["verstrektDoorPartij"]["uuid"], str(partij.uuid))
self.assertEqual(data["soortDigitaalAdres"], "changed")
self.assertEqual(data["adres"], "changed")
self.assertEqual(data["soortDigitaalAdres"], SoortDigitaalAdres.telefoonnummer)
self.assertEqual(data["adres"], "0721434543")
self.assertEqual(data["omschrijving"], "changed")

with self.subTest("update_betrokkene_partij_to_none"):
data = {
"verstrektDoorBetrokkene": None,
"verstrektDoorPartij": None,
"soortDigitaalAdres": "changed",
"adres": "changed",
"soortDigitaalAdres": SoortDigitaalAdres.telefoonnummer,
"adres": "0721434543",
"omschrijving": "changed",
}

Expand All @@ -149,8 +150,10 @@ def test_update_digitaal_adres(self):

self.assertIsNone(data["verstrektDoorBetrokkene"])
self.assertIsNone(data["verstrektDoorPartij"])
self.assertEqual(data["soortDigitaalAdres"], "changed")
self.assertEqual(data["adres"], "changed")
self.assertEqual(
data["soortDigitaalAdres"], SoortDigitaalAdres.telefoonnummer
)
self.assertEqual(data["adres"], "0721434543")
self.assertEqual(data["omschrijving"], "changed")

def test_partial_update_digitaal_adres(self):
Expand All @@ -159,8 +162,8 @@ def test_partial_update_digitaal_adres(self):
digitaal_adres = DigitaalAdresFactory.create(
betrokkene=betrokkene,
partij=partij,
soort_digitaal_adres="soortDigitaalAdres",
adres="adres",
soort_digitaal_adres=SoortDigitaalAdres.email,
adres="foobar@example.com",
omschrijving="omschrijving",
)
detail_url = reverse(
Expand All @@ -172,12 +175,13 @@ def test_partial_update_digitaal_adres(self):

self.assertEqual(data["verstrektDoorBetrokkene"]["uuid"], str(betrokkene.uuid))
self.assertEqual(data["verstrektDoorPartij"]["uuid"], str(partij.uuid))
self.assertEqual(data["soortDigitaalAdres"], "soortDigitaalAdres")
self.assertEqual(data["adres"], "adres")
self.assertEqual(data["soortDigitaalAdres"], SoortDigitaalAdres.email)
self.assertEqual(data["adres"], "foobar@example.com")
self.assertEqual(data["omschrijving"], "omschrijving")

data = {
"soortDigitaalAdres": "changed",
"soortDigitaalAdres": SoortDigitaalAdres.telefoonnummer,
"adres": "0721434543",
}

response = self.client.patch(detail_url, data)
Expand All @@ -188,8 +192,8 @@ def test_partial_update_digitaal_adres(self):

self.assertEqual(data["verstrektDoorBetrokkene"]["uuid"], str(betrokkene.uuid))
self.assertEqual(data["verstrektDoorPartij"]["uuid"], str(partij.uuid))
self.assertEqual(data["soortDigitaalAdres"], "changed")
self.assertEqual(data["adres"], "adres")
self.assertEqual(data["soortDigitaalAdres"], SoortDigitaalAdres.telefoonnummer)
self.assertEqual(data["adres"], "0721434543")
self.assertEqual(data["omschrijving"], "omschrijving")

def test_destroy_digitaal_adres(self):
Expand Down
8 changes: 8 additions & 0 deletions src/openklant/components/klantinteracties/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.db.models import TextChoices
from django.utils.translation import gettext_lazy as _


class SoortDigitaalAdres(TextChoices):
email = "email", _("Email")
telefoonnummer = "telefoonnummer", _("Telefoonnummer")
overig = "overig", _("Overig")
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 4.2.15 on 2024-10-18 12:57

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("klantinteracties", "0019_alter_partij_indicatie_geheimhouding"),
]

operations = [
migrations.AlterField(
model_name="digitaaladres",
name="soort_digitaal_adres",
field=models.CharField(
choices=[
("email", "Email"),
("telefoonnummer", "Telefoonnummer"),
("overig", "Overig"),
],
help_text="Typering van het digitale adres die aangeeft via welk(e) kanaal of kanalen met dit adres contact kan worden opgenomen.",
max_length=255,
verbose_name="soort digitaal adres",
),
),
]
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from django.db import models
from django.utils.translation import gettext_lazy as _

from openklant.components.klantinteracties.constants import SoortDigitaalAdres
from openklant.components.klantinteracties.models.klantcontacten import Betrokkene
from openklant.components.klantinteracties.models.partijen import Partij
from openklant.components.utils.mixins import APIMixin
Expand Down Expand Up @@ -36,6 +37,7 @@ class DigitaalAdres(APIMixin, models.Model):
"met dit adres contact kan worden opgenomen."
),
max_length=255,
choices=SoortDigitaalAdres.choices,
)
adres = models.CharField(
_("adres"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import factory
import factory.fuzzy

from openklant.components.klantinteracties.constants import SoortDigitaalAdres
from openklant.components.klantinteracties.models.digitaal_adres import DigitaalAdres
from openklant.components.klantinteracties.models.tests.factories.klantcontacten import (
BetrokkeneFactory,
Expand All @@ -9,7 +10,7 @@
class DigitaalAdresFactory(factory.django.DjangoModelFactory):
uuid = factory.Faker("uuid4")
betrokkene = factory.SubFactory(BetrokkeneFactory)
soort_digitaal_adres = factory.Faker("word")
soort_digitaal_adres = factory.fuzzy.FuzzyChoice(SoortDigitaalAdres.values)
adres = factory.Faker("word")
omschrijving = factory.Faker("word")

Expand Down
14 changes: 10 additions & 4 deletions src/openklant/components/klantinteracties/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3355,10 +3355,10 @@ components:
worden.
maxLength: 80
soortDigitaalAdres:
type: string
allOf:
- $ref: '#/components/schemas/SoortDigitaalAdresEnum'
description: Typering van het digitale adres die aangeeft via welk(e) kanaal
of kanalen met dit adres contact kan worden opgenomen.
maxLength: 255
omschrijving:
type: string
description: Omschrijving van het digitaal adres.
Expand Down Expand Up @@ -4710,10 +4710,10 @@ components:
worden.
maxLength: 80
soortDigitaalAdres:
type: string
allOf:
- $ref: '#/components/schemas/SoortDigitaalAdresEnum'
description: Typering van het digitale adres die aangeeft via welk(e) kanaal
of kanalen met dit adres contact kan worden opgenomen.
maxLength: 255
omschrijving:
type: string
description: Omschrijving van het digitaal adres.
Expand Down Expand Up @@ -5145,6 +5145,12 @@ components:
- geautomatiseerde_actor
- organisatorische_eenheid
type: string
SoortDigitaalAdresEnum:
enum:
- email
- telefoonnummer
- overig
type: string
SoortPartijEnum:
enum:
- persoon
Expand Down

0 comments on commit 8edfb3e

Please sign in to comment.