|
5 | 5 | from vng_api_common.tests import reverse
|
6 | 6 |
|
7 | 7 | from openklant.components.klantinteracties.constants import SoortDigitaalAdres
|
| 8 | +from openklant.components.klantinteracties.models import DigitaalAdres |
8 | 9 | from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import (
|
9 | 10 | DigitaalAdresFactory,
|
10 | 11 | )
|
@@ -73,6 +74,7 @@ def test_create_digitaal_adres(self):
|
73 | 74 | self.assertEqual(data["verstrektDoorPartij"], None)
|
74 | 75 | self.assertEqual(data["adres"], "foobar@example.com")
|
75 | 76 | self.assertEqual(data["omschrijving"], "omschrijving")
|
| 77 | + self.assertEqual(data["isStandaardAdres"], False) |
76 | 78 |
|
77 | 79 | with self.subTest("with_betrokkene_and_partij"):
|
78 | 80 | partij = PartijFactory.create()
|
@@ -160,6 +162,47 @@ def test_create_digitaal_adres_email_validation(self):
|
160 | 162 | )
|
161 | 163 | self.assertEqual(digitaal_adres.adres, "0612345678")
|
162 | 164 |
|
| 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 | + |
163 | 206 | def test_update_digitaal_adres(self):
|
164 | 207 | betrokkene, betrokkene2 = BetrokkeneFactory.create_batch(2)
|
165 | 208 | partij, partij2 = PartijFactory.create_batch(2)
|
@@ -226,6 +269,55 @@ def test_update_digitaal_adres(self):
|
226 | 269 | self.assertEqual(data["adres"], "0721434543")
|
227 | 270 | self.assertEqual(data["omschrijving"], "changed")
|
228 | 271 |
|
| 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 | + |
229 | 321 | def test_partial_update_digitaal_adres(self):
|
230 | 322 | betrokkene = BetrokkeneFactory.create()
|
231 | 323 | partij = PartijFactory.create()
|
|
0 commit comments