Skip to content

Commit 1360921

Browse files
committed
✅ [#246] Add tests for DigitaalAdres.is_standaard_adres
1 parent f777020 commit 1360921

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

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

+92
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from vng_api_common.tests import reverse
66

77
from openklant.components.klantinteracties.constants import SoortDigitaalAdres
8+
from openklant.components.klantinteracties.models import DigitaalAdres
89
from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import (
910
DigitaalAdresFactory,
1011
)
@@ -73,6 +74,7 @@ def test_create_digitaal_adres(self):
7374
self.assertEqual(data["verstrektDoorPartij"], None)
7475
self.assertEqual(data["adres"], "foobar@example.com")
7576
self.assertEqual(data["omschrijving"], "omschrijving")
77+
self.assertEqual(data["isStandaardAdres"], False)
7678

7779
with self.subTest("with_betrokkene_and_partij"):
7880
partij = PartijFactory.create()
@@ -160,6 +162,47 @@ def test_create_digitaal_adres_email_validation(self):
160162
)
161163
self.assertEqual(digitaal_adres.adres, "0612345678")
162164

165+
def test_create_digitaal_adres_is_standaard_adres(self):
166+
"""
167+
Creating a DigitaalAdres with isStandaardAdres=True should make other existing
168+
DigitaalAdressen no longer the default
169+
"""
170+
# Since this has a different Partij, the value of `is_standaard_adres` should stay `True`
171+
partij1, partij2 = PartijFactory.create_batch(2)
172+
existing_adres_different_partij = DigitaalAdresFactory.create(
173+
partij=partij1, is_standaard_adres=True, soort_digitaal_adres="email"
174+
)
175+
# This adres has the same `soort_digitaal_adres` and `partij`, so the value of
176+
# `is_standaard_adres` should be changed to `False` if we change another one to `True`
177+
existing_adres = DigitaalAdresFactory.create(
178+
is_standaard_adres=True, soort_digitaal_adres="email", partij=partij2
179+
)
180+
181+
list_url = reverse("klantinteracties:digitaaladres-list")
182+
data = {
183+
"verstrektDoorBetrokkene": None,
184+
"verstrektDoorPartij": {"uuid": str(partij2.uuid)},
185+
"soortDigitaalAdres": "email",
186+
"adres": "foo@bar.com",
187+
"omschrijving": "omschrijving",
188+
"isStandaardAdres": True,
189+
}
190+
191+
response = self.client.post(list_url, data)
192+
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
193+
194+
data = response.json()
195+
196+
self.assertEqual(data["isStandaardAdres"], True)
197+
198+
existing_adres_different_partij.refresh_from_db()
199+
existing_adres.refresh_from_db()
200+
new_adres = DigitaalAdres.objects.last()
201+
202+
self.assertEqual(existing_adres_different_partij.is_standaard_adres, True)
203+
self.assertEqual(existing_adres.is_standaard_adres, False)
204+
self.assertEqual(new_adres.is_standaard_adres, True)
205+
163206
def test_update_digitaal_adres(self):
164207
betrokkene, betrokkene2 = BetrokkeneFactory.create_batch(2)
165208
partij, partij2 = PartijFactory.create_batch(2)
@@ -226,6 +269,55 @@ def test_update_digitaal_adres(self):
226269
self.assertEqual(data["adres"], "0721434543")
227270
self.assertEqual(data["omschrijving"], "changed")
228271

272+
def test_update_digitaal_adres_is_standaard_adres(self):
273+
"""
274+
Creating a DigitaalAdres with isStandaardAdres=True should make other existing
275+
DigitaalAdressen no longer the default
276+
"""
277+
partij1, partij2 = PartijFactory.create_batch(2)
278+
# Since this has a different Partij, the value of `is_standaard_adres` should stay `True`
279+
existing_adres_different_partij = DigitaalAdresFactory.create(
280+
partij=partij1, is_standaard_adres=True, soort_digitaal_adres="email"
281+
)
282+
# This adres has the same `soort_digitaal_adres` and `partij`, so the value of
283+
# `is_standaard_adres` should be changed to `False` if we change another one to `True`
284+
existing_adres = DigitaalAdresFactory.create(
285+
is_standaard_adres=True, soort_digitaal_adres="email", partij=partij2
286+
)
287+
digitaal_adres = DigitaalAdresFactory.create(
288+
partij=partij2,
289+
soort_digitaal_adres="email",
290+
adres="adres",
291+
omschrijving="omschrijving",
292+
)
293+
detail_url = reverse(
294+
"klantinteracties:digitaaladres-detail",
295+
kwargs={"uuid": str(digitaal_adres.uuid)},
296+
)
297+
298+
data = {
299+
"verstrektDoorBetrokkene": {"uuid": str(digitaal_adres.betrokkene.uuid)},
300+
"verstrektDoorPartij": {"uuid": str(partij2.uuid)},
301+
"soortDigitaalAdres": "email",
302+
"isStandaardAdres": True,
303+
"adres": "foo@bar.com",
304+
"omschrijving": "changed",
305+
}
306+
307+
response = self.client.put(detail_url, data)
308+
309+
data = response.json()
310+
311+
self.assertEqual(data["isStandaardAdres"], True)
312+
313+
existing_adres_different_partij.refresh_from_db()
314+
existing_adres.refresh_from_db()
315+
digitaal_adres.refresh_from_db()
316+
317+
self.assertEqual(existing_adres_different_partij.is_standaard_adres, True)
318+
self.assertEqual(existing_adres.is_standaard_adres, False)
319+
self.assertEqual(digitaal_adres.is_standaard_adres, True)
320+
229321
def test_partial_update_digitaal_adres(self):
230322
betrokkene = BetrokkeneFactory.create()
231323
partij = PartijFactory.create()

0 commit comments

Comments
 (0)