Skip to content

Commit 567d019

Browse files
committed
✨ [#120] added expand detail functionality
1 parent c7a2eb6 commit 567d019

File tree

2 files changed

+140
-3
lines changed

2 files changed

+140
-3
lines changed

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

+139-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def setUp(self):
4141
klantcontact=self.klantcontact, partij=self.partij
4242
)
4343

44-
def test_sinle_expansion(self):
44+
def test_list_single_expansion(self):
4545
list_url = reverse("klantinteracties:klantcontact-list")
4646
response = self.client.get(list_url, {"expand": "had_betrokkenen"})
4747

@@ -91,7 +91,7 @@ def test_sinle_expansion(self):
9191
self.assertEqual(expand["initiator"], self.betrokkene.initiator)
9292
self.assertEqual(expand["wasPartij"]["uuid"], str(self.partij.uuid))
9393

94-
def test_multiple_level_expansion(self):
94+
def test_list_multiple_level_expansion(self):
9595
list_url = reverse("klantinteracties:klantcontact-list")
9696
response = self.client.get(
9797
list_url, {"expand": "had_betrokkenen,had_betrokkenen.was_partij"}
@@ -179,3 +179,140 @@ def test_multiple_level_expansion(self):
179179
"land": self.partij.correspondentieadres_land,
180180
},
181181
)
182+
183+
def test_detail_single_expansion(self):
184+
detail_url = reverse(
185+
"klantinteracties:klantcontact-detail",
186+
kwargs={"uuid": str(self.klantcontact.uuid)},
187+
)
188+
response = self.client.get(detail_url, {"expand": "had_betrokkenen"})
189+
190+
self.assertEqual(response.status_code, status.HTTP_200_OK)
191+
192+
data = response.json()
193+
194+
self.assertEqual(data["hadBetrokkenen"][0]["uuid"], str(self.betrokkene.uuid))
195+
self.assertTrue(data["_expand"])
196+
expand = data["_expand"]["hadBetrokkenen"]
197+
198+
self.assertEqual(
199+
expand["bezoekadres"],
200+
{
201+
"nummeraanduidingId": self.betrokkene.bezoekadres_nummeraanduiding_id,
202+
"adresregel1": self.betrokkene.bezoekadres_adresregel1,
203+
"adresregel2": self.betrokkene.bezoekadres_adresregel2,
204+
"adresregel3": self.betrokkene.bezoekadres_adresregel3,
205+
"land": self.betrokkene.bezoekadres_land,
206+
},
207+
)
208+
self.assertEqual(
209+
expand["correspondentieadres"],
210+
{
211+
"nummeraanduidingId": self.betrokkene.correspondentieadres_nummeraanduiding_id,
212+
"adresregel1": self.betrokkene.correspondentieadres_adresregel1,
213+
"adresregel2": self.betrokkene.correspondentieadres_adresregel2,
214+
"adresregel3": self.betrokkene.correspondentieadres_adresregel3,
215+
"land": self.betrokkene.correspondentieadres_land,
216+
},
217+
)
218+
self.assertEqual(
219+
expand["contactnaam"],
220+
{
221+
"voorletters": self.betrokkene.contactnaam_voorletters,
222+
"voornaam": self.betrokkene.contactnaam_voornaam,
223+
"voorvoegselAchternaam": self.betrokkene.contactnaam_voorvoegsel_achternaam,
224+
"achternaam": self.betrokkene.contactnaam_achternaam,
225+
},
226+
)
227+
self.assertEqual(expand["rol"], self.betrokkene.rol)
228+
self.assertEqual(expand["organisatienaam"], self.betrokkene.organisatienaam)
229+
self.assertEqual(expand["initiator"], self.betrokkene.initiator)
230+
self.assertEqual(expand["wasPartij"]["uuid"], str(self.partij.uuid))
231+
232+
def test_detail_multiple_level_expansion(self):
233+
detail_url = reverse(
234+
"klantinteracties:klantcontact-detail",
235+
kwargs={"uuid": str(self.klantcontact.uuid)},
236+
)
237+
response = self.client.get(
238+
detail_url, {"expand": "had_betrokkenen,had_betrokkenen.was_partij"}
239+
)
240+
241+
self.assertEqual(response.status_code, status.HTTP_200_OK)
242+
243+
data = response.json()
244+
245+
self.assertEqual(data["hadBetrokkenen"][0]["uuid"], str(self.betrokkene.uuid))
246+
self.assertTrue(data["_expand"])
247+
expand = data["_expand"]["hadBetrokkenen"]
248+
249+
self.assertEqual(
250+
expand["bezoekadres"],
251+
{
252+
"nummeraanduidingId": self.betrokkene.bezoekadres_nummeraanduiding_id,
253+
"adresregel1": self.betrokkene.bezoekadres_adresregel1,
254+
"adresregel2": self.betrokkene.bezoekadres_adresregel2,
255+
"adresregel3": self.betrokkene.bezoekadres_adresregel3,
256+
"land": self.betrokkene.bezoekadres_land,
257+
},
258+
)
259+
self.assertEqual(
260+
expand["correspondentieadres"],
261+
{
262+
"nummeraanduidingId": self.betrokkene.correspondentieadres_nummeraanduiding_id,
263+
"adresregel1": self.betrokkene.correspondentieadres_adresregel1,
264+
"adresregel2": self.betrokkene.correspondentieadres_adresregel2,
265+
"adresregel3": self.betrokkene.correspondentieadres_adresregel3,
266+
"land": self.betrokkene.correspondentieadres_land,
267+
},
268+
)
269+
self.assertEqual(
270+
expand["contactnaam"],
271+
{
272+
"voorletters": self.betrokkene.contactnaam_voorletters,
273+
"voornaam": self.betrokkene.contactnaam_voornaam,
274+
"voorvoegselAchternaam": self.betrokkene.contactnaam_voorvoegsel_achternaam,
275+
"achternaam": self.betrokkene.contactnaam_achternaam,
276+
},
277+
)
278+
self.assertEqual(expand["rol"], self.betrokkene.rol)
279+
self.assertEqual(expand["organisatienaam"], self.betrokkene.organisatienaam)
280+
self.assertEqual(expand["initiator"], self.betrokkene.initiator)
281+
self.assertEqual(expand["wasPartij"]["uuid"], str(self.partij.uuid))
282+
self.assertTrue(expand["_expand"])
283+
284+
# second expand
285+
expand = expand["_expand"]["wasPartij"]
286+
287+
self.assertEqual(expand["nummer"], self.partij.nummer)
288+
self.assertEqual(expand["interneNotitie"], self.partij.interne_notitie)
289+
self.assertEqual(
290+
expand["digitaleAdressen"][0]["uuid"], str(self.digitaal_adres.uuid)
291+
)
292+
self.assertEqual(expand["vertegenwoordigde"], [])
293+
self.assertEqual(expand["soortPartij"], self.partij.soort_partij)
294+
self.assertEqual(
295+
expand["indicatieGeheimhouding"], self.partij.indicatie_geheimhouding
296+
)
297+
self.assertEqual(expand["voorkeurstaal"], self.partij.voorkeurstaal)
298+
self.assertEqual(expand["indicatieActief"], self.partij.indicatie_actief)
299+
self.assertEqual(
300+
expand["bezoekadres"],
301+
{
302+
"nummeraanduidingId": self.partij.bezoekadres_nummeraanduiding_id,
303+
"adresregel1": self.partij.bezoekadres_adresregel1,
304+
"adresregel2": self.partij.bezoekadres_adresregel2,
305+
"adresregel3": self.partij.bezoekadres_adresregel3,
306+
"land": self.partij.bezoekadres_land,
307+
},
308+
)
309+
self.assertEqual(
310+
expand["correspondentieadres"],
311+
{
312+
"nummeraanduidingId": self.partij.correspondentieadres_nummeraanduiding_id,
313+
"adresregel1": self.partij.correspondentieadres_adresregel1,
314+
"adresregel2": self.partij.correspondentieadres_adresregel2,
315+
"adresregel3": self.partij.correspondentieadres_adresregel3,
316+
"land": self.partij.correspondentieadres_land,
317+
},
318+
)

src/openklant/components/utils/mixins.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class ExpandMixin:
3636
expand_param = "expand"
3737

3838
def include_allowed(self):
39-
return self.action in ["list"]
39+
return self.action in ["list", "retrieve"]
4040

4141
def get_requested_inclusions(self, request):
4242
# Pull expand parameter from request body in case of _zoek operation

0 commit comments

Comments
 (0)