def test_ophalen_alle_betrokkenen(self): """ Test dat alle betrokkenen kunnen opgehaald worden, onafhankelijk van rol. Zie https://github.com/VNG-Realisatie/gemma-zaakregistratiecomponent/pull/9#issuecomment-407882637 """ zaak1 = ZaakFactory.create() rollen1 = RolFactory.create_batch(3, zaak=zaak1) rol2 = RolFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak1.uuid) rollen_list_url = get_operation_url('rol_list') response = self.client.get(rollen_list_url, { 'zaak': f"http://testserver{zaak_url}", }) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(len(response_data), 3) expected_urls = { f"http://testserver{get_operation_url('rol_read', uuid=rol.uuid)}" for rol in rollen1 } received_urls = {rol['url'] for rol in response_data} self.assertEqual(received_urls, expected_urls) rol2_url = f"http://testserver{get_operation_url('rol_read', uuid=rol2.uuid)}" self.assertNotIn(rol2_url, received_urls)
def test_zet_adres_binnenland(self): """ Het adres van de melding moet in de zaak beschikbaar zijn. """ url = get_operation_url('zaakobject_create') zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': zaak_url, 'object': OBJECT_MET_ADRES, 'type': 'VerblijfsObject', 'relatieomschrijving': 'Het adres waar de overlast vastgesteld werd.', } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) response_data = response.json() zaakobject = ZaakObject.objects.get() self.assertEqual(zaakobject.zaak, zaak) detail_url = get_operation_url('zaakobject_read', uuid=zaakobject.uuid) self.assertEqual( response_data, { 'url': f"http://testserver{detail_url}", 'zaak': f"http://testserver{zaak_url}", 'object': OBJECT_MET_ADRES, 'type': 'VerblijfsObject', 'relatieomschrijving': 'Het adres waar de overlast vastgesteld werd.', } )
def test_zet_zaakstatus(self): """ De actuele status van een zaak moet gezet worden bij het aanmaken van de zaak. """ url = get_operation_url('status_create') zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': zaak_url, 'statusType': STATUS_TYPE, 'datumStatusGezet': isodatetime(2018, 6, 6, 17, 23, 43), } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) response_data = response.json() status_ = Status.objects.get() self.assertEqual(status_.zaak, zaak) detail_url = get_operation_url('status_read', uuid=status_.uuid) self.assertEqual( response_data, { 'url': f"http://testserver{detail_url}", 'zaak': f"http://testserver{zaak_url}", 'statusType': STATUS_TYPE, 'datumStatusGezet': '2018-06-06T17:23:43Z', # UTC 'statustoelichting': '', } )
def test_update_zaak_with_kenmerken(self): zaak = ZaakFactory.create(zaaktype=ZAAKTYPE) kenmerk_1 = zaak.zaakkenmerk_set.create(kenmerk='kenmerk 1', bron='bron 1') self.assertEqual(zaak.zaakkenmerk_set.count(), 1) zaak_read_url = get_operation_url('zaak_read', uuid=zaak.uuid) response = self.client.get(zaak_read_url, HTTP_ACCEPT_CRS='EPSG:4326') data = response.json() zaak_update_url = get_operation_url('zaak_update', uuid=zaak.uuid) data['kenmerken'].append({ 'kenmerk': 'kenmerk 2', 'bron': 'bron 2', }) response = self.client.put(zaak_update_url, data, HTTP_ACCEPT_CRS='EPSG:4326') self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) zaak = Zaak.objects.get(identificatie=zaak.identificatie) self.assertEqual(zaak.zaakkenmerk_set.count(), 2) # All objects are deleted, and (re)created. self.assertFalse( kenmerk_1.pk in zaak.zaakkenmerk_set.values_list('pk', flat=True))
def test_create_klantcontact(self): url = get_operation_url('klantcontact_create') zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': zaak_url, 'datumtijd': isodatetime(2018, 6, 11, 13, 47, 55), 'kanaal': 'Webformulier', } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) response_data = response.json() klantcontact = KlantContact.objects.get() self.assertIsInstance(klantcontact.identificatie, str) self.assertNotEqual(klantcontact.identificatie, '') self.assertEqual(klantcontact.zaak, zaak) detail_url = get_operation_url('klantcontact_read', uuid=klantcontact.uuid) self.assertEqual( response_data, { 'url': f"http://testserver{detail_url}", 'zaak': f"http://testserver{zaak_url}", 'identificatie': klantcontact.identificatie, 'datumtijd': '2018-06-11T13:47:55Z', 'kanaal': 'Webformulier', } )
def setUp(self): super().setUp() self.catalogus = CatalogusFactory.create(domein='ABCDE', rsin='000000001') self.catalogus_list_url = get_operation_url('catalogus_list') self.catalogus_detail_url = get_operation_url('catalogus_read', uuid=self.catalogus.uuid)
def test_zet_eigenschappen(self): zaak = ZaakFactory.create() url = get_operation_url('zaakeigenschap_create', zaak_uuid=zaak.uuid) zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': zaak_url, 'eigenschap': EIGENSCHAP_OBJECTTYPE, 'waarde': 'overlast_water' } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) response_data = response.json() zaakeigenschap = ZaakEigenschap.objects.get() self.assertEqual(zaakeigenschap.zaak, zaak) detail_url = get_operation_url('zaakeigenschap_read', zaak_uuid=zaak.uuid, uuid=zaakeigenschap.uuid) self.assertEqual( response_data, { 'url': f"http://testserver{detail_url}", 'zaak': f"http://testserver{zaak_url}", 'eigenschap': EIGENSCHAP_OBJECTTYPE, 'waarde': 'overlast_water' })
def test_zet_behandelaar(self): zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) url = get_operation_url('rol_create') response = self.client.post( url, { 'zaak': zaak_url, 'betrokkene': WATERNET, 'betrokkeneType': RolTypes.organisatorische_eenheid, 'rolomschrijving': RolOmschrijving.behandelaar, 'roltoelichting': 'Verantwoordelijke behandelaar voor de melding', }) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.json()) response_data = response.json() self.assertIn('url', response_data) del response_data['url'] self.assertEqual( response_data, { 'zaak': f'http://testserver{zaak_url}', 'betrokkene': WATERNET, 'betrokkeneType': RolTypes.organisatorische_eenheid, 'rolomschrijving': RolOmschrijving.behandelaar, 'roltoelichting': 'Verantwoordelijke behandelaar voor de melding', })
def test_meerdere_coordinatoren_verboden(self): """ Uit RGBZ 2.0, deel 2, Attribuutsoort Rolomschrijving (bij relatieklasse ROL): Bij een ZAAK kan maximaal één ROL met als Rolomschrijving generiek 'Initiator' voor komen. """ zaak = ZaakFactory.create() RolFactory.create(zaak=zaak, betrokkene_type=RolTypes.natuurlijk_persoon, rolomschrijving=RolOmschrijving.zaakcoordinator) zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) url = get_operation_url('rol_create') response = self.client.post( url, { 'zaak': zaak_url, 'betrokkene': WATERNET, 'betrokkeneType': RolTypes.organisatorische_eenheid, 'rolomschrijving': RolOmschrijving.zaakcoordinator, 'roltoelichting': 'Melder', }) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
def test_zet_stadsdeel(self): url = get_operation_url('zaakobject_create') zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': zaak_url, 'object': STADSDEEL, 'type': 'VerblijfsObject', 'relatieomschrijving': 'Afgeleid gebied', } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) response_data = response.json() zaakobject = ZaakObject.objects.get() self.assertEqual(zaakobject.zaak, zaak) detail_url = get_operation_url('zaakobject_read', uuid=zaakobject.uuid) self.assertEqual( response_data, { 'url': f"http://testserver{detail_url}", 'zaak': f"http://testserver{zaak_url}", 'object': STADSDEEL, 'type': 'VerblijfsObject', 'relatieomschrijving': 'Afgeleid gebied', } )
def test_zet_verantwoordelijk(self): url = get_operation_url('rol_create') betrokkene = 'https://example.com/orc/api/v1/vestigingen/waternet' zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': zaak_url, 'betrokkene': betrokkene, 'betrokkeneType': 'Vestiging', 'rolomschrijving': 'Behandelaar', 'roltoelichting': 'Baggeren van gracht', } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) response_data = response.json() rol = Rol.objects.get() self.assertEqual(rol.zaak, zaak) self.assertEqual(rol.betrokkene, betrokkene) detail_url = get_operation_url('rol_read', uuid=rol.uuid) self.assertEqual( response_data, { 'url': f"http://testserver{detail_url}", 'zaak': f"http://testserver{zaak_url}", 'betrokkene': betrokkene, 'betrokkeneType': 'Vestiging', 'rolomschrijving': 'Behandelaar', 'roltoelichting': 'Baggeren van gracht', } )
def test_anoniem_binnen_ams_centrum_district(self): """ Test dat zaken binnen een bepaald gebied kunnen opgevraagd worden. """ # in district zaak = ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595)) # LONG LAT # outside of district ZaakFactory.create(zaakgeometrie=Point(4.905650, 52.357621)) # no geo set ZaakFactory.create() url = get_operation_url('zaak__zoek') response = self.client.post(url, { 'zaakgeometrie': { 'within': { 'type': 'Polygon', 'coordinates': [POLYGON_AMSTERDAM_CENTRUM] } } }, HTTP_ACCEPT_CRS='EPSG:4326') self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(len(response_data), 1) detail_url = get_operation_url('zaak_read', uuid=zaak.uuid) self.assertEqual(response_data[0]['url'], f"http://testserver{detail_url}")
def setUp(self): super().setUp() self.zaaktype = ZaakTypeFactory.create(catalogus=self.catalogus) self.zaaktype_list_url = get_operation_url( 'zaaktype_list', catalogus_uuid=self.catalogus.uuid) self.zaaktype_detail_url = get_operation_url( 'zaaktype_read', catalogus_uuid=self.catalogus.uuid, uuid=self.zaaktype.uuid)
def setUp(self): super().setUp() self.informatieobjecttype = InformatieObjectTypeFactory.create( catalogus=self.catalogus, zaaktypes=None, model=['http://www.example.com'], informatieobjecttypetrefwoord=['abc', 'def']) self.informatieobjecttype_list_url = get_operation_url( 'informatieobjecttype_list', catalogus_uuid=self.catalogus.uuid) self.informatieobjecttype_detail_url = get_operation_url( 'informatieobjecttype_read', catalogus_uuid=self.catalogus.uuid, uuid=self.informatieobjecttype.uuid)
def registreer_klantcontact(self): url = get_operation_url('klantcontact_create') self.client.post(url, { 'zaak': self.references['zaak_url'], 'datumtijd': self.data['datetime'], 'kanaal': self.data['source'], })
def test_create_zaak_with_kenmerken(self): zaak_create_url = get_operation_url('zaak_create') data = { 'zaaktype': ZAAKTYPE, 'bronorganisatie': '517439943', 'verantwoordelijkeOrganisatie': VERANTWOORDELIJKE_ORGANISATIE, 'identificatie': 'AVG-inzageverzoek-1', 'omschrijving': 'Dagontheffing - Station Haarlem', 'toelichting': 'Het betreft een clown met grote trom, mondharmonica en cymbalen.', 'startdatum': '2018-08-15', 'kenmerken': [{ 'kenmerk': 'kenmerk 1', 'bron': 'bron 1', }, { 'kenmerk': 'kenmerk 2', 'bron': 'bron 2', }] } response = self.client.post(zaak_create_url, data, HTTP_ACCEPT_CRS='EPSG:4326') self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) zaak = Zaak.objects.get(identificatie=data['identificatie']) self.assertEqual(zaak.zaakkenmerk_set.count(), 2)
def test_create_aanvraag(self): """ Maak een zaak voor een aanvraag. """ zaak_create_url = get_operation_url('zaak_create') data = { 'zaaktype': ZAAKTYPE, 'bronorganisatie': '517439943', 'verantwoordelijkeOrganisatie': VERANTWOORDELIJKE_ORGANISATIE, 'identificatie': 'HLM-straatartiest-42', 'omschrijving': 'Dagontheffing - Station Haarlem', 'toelichting': 'Het betreft een clown met grote trom, mondharmonica en cymbalen.', 'startdatum': '2018-08-15', } # aanmaken zaak response = self.client.post(zaak_create_url, data, HTTP_ACCEPT_CRS='EPSG:4326') self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) data = response.json() self.assertIn('identificatie', data) self.assertEqual(data['registratiedatum'], date.today().strftime('%Y-%m-%d')) self.assertEqual(data['startdatum'], '2018-08-15')
def test_create_enkelvoudiginformatieobject(self): """ Registreer een ENKELVOUDIGINFORMATIEOBJECT """ url = get_operation_url('enkelvoudiginformatieobject_create') data = { 'identificatie': 'AMS20180701001', 'creatiedatum': '2018-07-01', 'titel': 'text_extra.txt', 'auteur': 'ANONIEM', 'formaat': 'text/plain', 'taal': 'dut', 'inhoud': base64.b64encode(b'Extra tekst in bijlage').decode('utf-8'), 'informatieobjecttype': 'https://example.com/ztc/api/v1/catalogus/1/informatieobjecttype/1', 'vertrouwelijkaanduiding': VertrouwelijkheidsAanduiding.openbaar } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) data = response.json() self.assertIn('identificatie', data) eio = EnkelvoudigInformatieObject.objects.get() self.assertEqual(eio.identificatie, 'AMS20180701001') self.assertEqual(eio.creatiedatum, date(2018, 7, 1)) # should be a URL download_url = urlparse(response.data['inhoud']) self.assertTrue(download_url.path.startswith(settings.MEDIA_URL)) self.assertTrue(download_url.path.endswith('.bin'))
def test_filter_ook_zaaktype(self): # both in district ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595), zaaktype='https://example.com/api/v1/zaaktype/1') ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595), zaaktype='https://example.com/api/v1/zaaktype/2') url = get_operation_url('zaak__zoek') response = self.client.post( url, { 'zaakgeometrie': { 'within': { 'type': 'Polygon', 'coordinates': [POLYGON_AMSTERDAM_CENTRUM] } }, 'zaaktype': 'https://example.com/api/v1/zaaktype/1' }, HTTP_ACCEPT_CRS='EPSG:4326') self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(len(response_data), 1)
def test_is_eindstatus(self): zaaktype = ZaakTypeFactory.create() rol_type = RolTypeFactory.create(zaaktype=zaaktype) status_type_1 = StatusTypeFactory.create(zaaktype=zaaktype, roltypen=[ rol_type, ], statustypevolgnummer=1) status_type_2 = StatusTypeFactory.create(zaaktype=zaaktype, roltypen=[ rol_type, ], statustypevolgnummer=2) # Volgnummer 1 url = get_operation_url( 'statustype_read', catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.uuid, uuid=status_type_1.uuid, ) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertFalse(response_data['isEindstatus']) # Volgnummer 2 url = get_operation_url('statustype_read', catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.uuid, uuid=status_type_2.uuid) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertTrue(response_data['isEindstatus'])
def test_create_zaak_zonder_bronorganisatie(self): url = get_operation_url('zaak_create') data = { 'zaaktype': ZAAKTYPE, 'registratiedatum': '2018-06-11', } response = self.client.post(url, data, HTTP_ACCEPT_CRS='EPSG:4326') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, 'bronorganisatie') self.assertEqual(error['code'], 'required')
def registreer_domein_data(self): zaak_uuid = self.references['zaak_url'].rsplit('/')[-1] url = get_operation_url('zaakeigenschap_create', zaak_uuid=zaak_uuid) self.client.post(url, { 'zaak': self.references['zaak_url'], 'eigenschap': EIGENSCHAP_OBJECTTYPE, 'waarde': 'overlast_water', }) self.client.post(url, { 'zaak': self.references['zaak_url'], 'eigenschap': EIGENSCHAP_NAAM_BOOT, 'waarde': TEST_DATA['waternet_naam_boot'], })
def test_ophalen_mogelijke_behandelaars(self): """ Toon aan dat het mogelijk is om een lijst van mogelijke behandelaars op te halen. Zie https://github.com/VNG-Realisatie/gemma-zaken/issues/182#issuecomment-408899919 voor context """ zaaktype = ZaakTypeFactory.create() roltype_behandelaar = RolTypeFactory.create( zaaktype=zaaktype, omschrijving_generiek=RolOmschrijving.behandelaar, ) MogelijkeBetrokkeneFactory.create_batch(2, roltype=roltype_behandelaar) # unrelated, but same ZAAKTYPE, should not show up MogelijkeBetrokkeneFactory.create( roltype__zaaktype=zaaktype, roltype__omschrijving_generiek=RolOmschrijving.adviseur) url = get_operation_url('roltype_list', catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.uuid) response = self.client.get( url, { 'omschrijvingGeneriek': RolOmschrijving.behandelaar, }) self.assertEqual(response.status_code, 200) response_data = response.json() self.assertEqual(len(response_data), 1) self.assertResponseTypes(response_data[0], ( ('url', str), ('zaaktype', str), ('omschrijving', str), ('omschrijvingGeneriek', str), ('mogelijkeBetrokkenen', list), )) mogelijke_betrokkenen = response_data[0]['mogelijkeBetrokkenen'] self.assertEqual(len(mogelijke_betrokkenen), 2) self.assertResponseTypes(mogelijke_betrokkenen[0], ( ('betrokkene', str), ('betrokkeneType', str), ))
def test_nested_resources(self): """DSO: API-09 (nested resources) A ``ZaakType`` object can only be part of a ``Catalogus`` object. Hence, it should be nested under the ``catalogussen`` resource: ``/api/v1/catalogussen/{uuid}/zaaktypen``. """ zaaktype = ZaakTypeFactory.create(catalogus=self.catalogus) kwargs = {'catalogus_uuid': self.catalogus.uuid, 'uuid': zaaktype.uuid} zaaktype_detail_url = get_operation_url('zaaktype_read', **kwargs) self.assertEqual( zaaktype_detail_url, '/api/v1/catalogussen/{catalogus_uuid}/zaaktypen/{uuid}'.format( **kwargs))
def test_upload_image(self): url = get_operation_url('enkelvoudiginformatieobject_create') # create dummy image in memory image = Image.new('RGB', (1, 1), 'red') image_io = BytesIO() image.save(image_io, format='JPEG') image_data = base64.b64encode(image_io.getvalue()) data = { 'inhoud': image_data.decode('utf-8'), 'bronorganisatie': '715832694', 'taal': 'dut', 'creatiedatum': '2018-07-30', 'titel': 'bijlage.jpg', 'vertrouwelijkaanduiding': VertrouwelijkheidsAanduiding.openbaar, 'auteur': 'John Doe', 'informatieobjecttype': 'https://example.com/ztc/api/v1/catalogus/1/informatieobjecttype/1', } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.json()) response_data = response.json() self.assertIn('identificatie', response_data) self.assertResponseTypes(response_data, ( ('url', str), ('inhoud', str), ('bronorganisatie', str), ('taal', str), ('creatiedatum', str), ('titel', str), ('vertrouwelijkaanduiding', str), ('auteur', str), ('informatieobjecttype', str), ))
def zet_statussen(self): status_create_url = get_operation_url('status_create') created = parser.parse(self.data['datetime']) self.client.post(status_create_url, { 'zaak': self.references['zaak_url'], 'statusType': STATUS_TYPE, 'datumStatusGezet': created.isoformat(), }) self.client.post(status_create_url, { 'zaak': self.references['zaak_url'], 'statusType': STATUS_TYPE_OVERLAST_GECONSTATEERD, 'datumStatusGezet': parser.parse(self.data['datetime_overlast']).isoformat(), })
def test_ophalen_servicenorm_doorlooptijd(self): zaaktype = ZaakTypeFactory.create() url = get_operation_url('zaaktype_read', catalogus_uuid=zaaktype.catalogus.uuid, uuid=zaaktype.uuid) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertResponseTypes(response_data, ( ('doorlooptijd', str), ('servicenorm', type(None)), )) self.assertEqual(response_data['doorlooptijd'], 'P30D')
def test_informatieobjecttype_filter(self): zaak_url = 'http://www.example.com/zrc/api/v1/zaken/1' ObjectInformatieObjectFactory.create_batch(2, is_zaak=True, object=zaak_url) ObjectInformatieObjectFactory.create(is_zaak=True, object='http://www.example.com/zrc/api/v1/zaken/2') url = get_operation_url('objectinformatieobject_list') response = self.client.get(url, {'object': zaak_url}) self.assertEqual(response.status_code, status.HTTP_200_OK, response.json()) response_data = response.json() self.assertEqual(len(response_data), 2) for zio in response_data: self.assertEqual(zio['object'], zaak_url)
def registreer_zaak(self): zaak_create_url = get_operation_url('zaak_create') created = parser.parse(self.data['datetime']) intern_id = self.data['id'] response = self.client.post(zaak_create_url, { 'zaaktype': ZAAKTYPE, 'bronorganisatie': '517439943', 'verantwoordelijkeOrganisatie': VERANTWOORDELIJKE_ORGANISATIE, 'identificatie': f'WATER_{intern_id}', 'registratiedatum': created.strftime('%Y-%m-%d'), 'startdatum': created.strftime('%Y-%m-%d'), 'toelichting': self.data['text'], 'zaakgeometrie': self.data['coordinates'], }, HTTP_ACCEPT_CRS='EPSG:4326') self.references['zaak_url'] = response.json()['url']
def test_lees_eigenschappen(self): zaak = ZaakFactory.create() ZaakEigenschapFactory.create_batch(3, zaak=zaak) url = get_operation_url('zaakeigenschap_list', zaak_uuid=zaak.uuid) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(len(response_data), 3) for obj in response_data: with self.subTest(obj=obj): self.assertResponseTypes(obj, ( ('url', str), ('zaak', str), ('eigenschap', str), ('waarde', str), ))