Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#232] use an enum for soortDigitaalAdres #270

Merged
merged 2 commits into from
Oct 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue also mentions:

Add an 'overig' (other) option with the option to add a custom type of digital address.

So we might have to add an extra field in which this custom type can be specified?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be because of the wording but I think it refers to having an overig option to allow the adres field to contain other values than that of the email/telefoonnummer types.

)
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
Loading