def test_delete_zaak_cascades_properly(self): """ Deleting a zaak causes all related objects to be deleted as well. """ zaak = ZaakFactory.create(zaaktype=ZAAKTYPE) ZaakFactory.create(hoofdzaak=zaak, zaaktype=ZAAKTYPE) ZaakEigenschapFactory.create(zaak=zaak) StatusFactory.create(zaak=zaak) RolFactory.create(zaak=zaak) ResultaatFactory.create(zaak=zaak) ZaakObjectFactory.create(zaak=zaak) ZaakInformatieObjectFactory.create(zaak=zaak) KlantContactFactory.create(zaak=zaak) zaak_delete_url = get_operation_url('zaak_delete', uuid=zaak.uuid) response = self.client.delete(zaak_delete_url, **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT, response.data) self.assertEqual(Zaak.objects.all().count(), 0) self.assertEqual(ZaakEigenschap.objects.all().count(), 0) self.assertEqual(Status.objects.all().count(), 0) self.assertEqual(Rol.objects.all().count(), 0) self.assertEqual(Resultaat.objects.all().count(), 0) self.assertEqual(ZaakObject.objects.all().count(), 0) self.assertEqual(ZaakInformatieObject.objects.all().count(), 0) self.assertEqual(KlantContact.objects.all().count(), 0)
def test_cannot_change_zaak(self): zaak1 = ZaakFactory.create(zaaktype=ZAAKTYPE) zaak2 = ZaakFactory.create(zaaktype=ZAAKTYPE) zaakeigenschap = ZaakEigenschapFactory.create( zaak=zaak1, eigenschap=EIGENSCHAP, waarde="This is a value" ) zaakeigenschap_url = reverse( "zaakeigenschap-detail", kwargs={"version": 1, "zaak_uuid": zaak1.uuid, "uuid": zaakeigenschap.uuid}, ) zaak2_url = reverse( "zaak-detail", kwargs={"version": 1, "uuid": zaak2.uuid}, ) zaakeigenschap_data = { "zaak": f"http://example.com{zaak2_url}", "eigenschap": EIGENSCHAP, "waarde": "This is a changed value", } response = self.client.patch(zaakeigenschap_url, data=zaakeigenschap_data) self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) invalid_params = response.json()["invalidParams"] self.assertEqual(1, len(invalid_params)) self.assertIn("zaak", invalid_params[0]["name"]) self.assertEqual("wijzigen-niet-toegelaten", invalid_params[0]["code"])
def test_filter_on_archiefactiedatum_archiefnominatie_archiefstatus(self): zaak_1 = ZaakFactory.create( archiefnominatie=Archiefnominatie.blijvend_bewaren, archiefactiedatum=date(2010, 1, 1), archiefstatus=Archiefstatus.nog_te_archiveren, zaaktype=ZAAKTYPE, ) zaak_2 = ZaakFactory.create( archiefnominatie=Archiefnominatie.vernietigen, archiefactiedatum=date(2010, 1, 1), archiefstatus=Archiefstatus.nog_te_archiveren, zaaktype=ZAAKTYPE, ) zaak_list_url = get_operation_url("zaak_list") query_params = { "archiefactiedatum__lt": date(2015, 1, 1), "archiefnominatie": Archiefnominatie.blijvend_bewaren, "archiefstatus__in": ",".join( [Archiefstatus.nog_te_archiveren, Archiefstatus.gearchiveerd]), } query_params = urlencode(query_params, quote_via=quote_plus) response = self.client.get(f"{zaak_list_url}?{query_params}", **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) data = response.json()["results"] self.assertEqual(len(data), 1) self.assertTrue(data[0]["url"].endswith(str(zaak_1.uuid)))
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_filter_on_archiefactiedatum_archiefnominatie_archiefstatus(self): zaak_1 = ZaakFactory.create( archiefnominatie=Archiefnominatie.blijvend_bewaren, archiefactiedatum=date(2010, 1, 1), archiefstatus=Archiefstatus.nog_te_archiveren, ) zaak_2 = ZaakFactory.create( archiefnominatie=Archiefnominatie.vernietigen, archiefactiedatum=date(2010, 1, 1), archiefstatus=Archiefstatus.nog_te_archiveren, ) zaak_list_url = get_operation_url('zaak_list') query_params = { 'archiefactiedatum__lt': date(2015, 1, 1), 'archiefnominatie': Archiefnominatie.blijvend_bewaren, 'archiefstatus__in': ','.join([Archiefstatus.nog_te_archiveren, Archiefstatus.gearchiveerd]), } query_params = urlencode(query_params, quote_via=quote_plus) response = self.client.get(f'{zaak_list_url}?{query_params}', **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) data = response.json()['results'] self.assertEqual(len(data), 1) self.assertTrue(data[0]['url'].endswith(str(zaak_1.uuid)))
def test_filter_startdatum(self): ZaakFactory.create(zaaktype=ZAAKTYPE, startdatum='2019-01-01') ZaakFactory.create(zaaktype=ZAAKTYPE, startdatum='2019-03-01') url = reverse('zaak-list') response_gt = self.client.get(url, {'startdatum__gt': '2019-02-01'}, **ZAAK_READ_KWARGS) response_lt = self.client.get(url, {'startdatum__lt': '2019-02-01'}, **ZAAK_READ_KWARGS) response_gte = self.client.get(url, {'startdatum__gte': '2019-03-01'}, **ZAAK_READ_KWARGS) response_lte = self.client.get(url, {'startdatum__lte': '2019-01-01'}, **ZAAK_READ_KWARGS) for response in [response_gt, response_lt, response_gte, response_lte]: self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['count'], 1) self.assertEqual(response_gt.data['results'][0]['startdatum'], '2019-03-01') self.assertEqual(response_lt.data['results'][0]['startdatum'], '2019-01-01') self.assertEqual(response_gte.data['results'][0]['startdatum'], '2019-03-01') self.assertEqual(response_lte.data['results'][0]['startdatum'], '2019-01-01')
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", }, **ZAAK_WRITE_KWARGS, ) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json()["results"] self.assertEqual(len(response_data), 1)
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 test_add_resultaat_on_zaak_with_hoofdzaak_causes_archiefactiedatum_to_be_set( self): """ Add RESULTAAT that causes `archiefactiedatum` to be set. """ hoofd_zaak = ZaakFactory.create(einddatum=date(2019, 1, 1), zaaktype=ZAAKTYPE) zaak = ZaakFactory.create(hoofdzaak=hoofd_zaak, zaaktype=ZAAKTYPE) zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) # add resultaat resultaat_create_url = get_operation_url('resultaat_create') data = { 'zaak': zaak_url, 'resultaatType': RESULTAATTYPE, 'toelichting': '', } response = self.client.post(resultaat_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) # add final status to the case to close it and to calculate archive parameters status_create_url = get_operation_url('status_create') responses = { RESULTAATTYPE: { 'url': RESULTAATTYPE, 'archiefactietermijn': 'P10Y', 'archiefnominatie': Archiefnominatie.blijvend_bewaren, 'brondatumArchiefprocedure': { 'afleidingswijze': BrondatumArchiefprocedureAfleidingswijze.hoofdzaak, 'datumkenmerk': None, 'objecttype': None, 'procestermijn': None, } }, STATUSTYPE: { 'url': STATUSTYPE, 'volgnummer': 2, 'isEindstatus': True, } } data = { 'zaak': zaak_url, 'statusType': STATUSTYPE, 'datumStatusGezet': '2018-10-18T20:00:00Z', } with mock_client(responses): response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) zaak.refresh_from_db() self.assertEqual(zaak.archiefactiedatum, date(2029, 1, 1))
def test_deelzaken(self): hoofdzaak = ZaakFactory.create(zaaktype=ZAAKTYPE) deelzaak = ZaakFactory.create(hoofdzaak=hoofdzaak, zaaktype=ZAAKTYPE) detail_url = reverse(hoofdzaak) deelzaak_url = reverse(deelzaak) response = self.client.get(detail_url, **ZAAK_READ_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['deelzaken'], [f"http://testserver{deelzaak_url}"])
def test_delete_deel_zaak(self): """ Deleting a deel zaak only deletes the deel zaak, and not the hoofd zaak. """ zaak = ZaakFactory.create() deel_zaak = ZaakFactory.create(hoofdzaak=zaak) zaak_delete_url = get_operation_url('zaak_delete', uuid=deel_zaak.uuid) response = self.client.delete(zaak_delete_url, **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT, response.data) self.assertEqual(Zaak.objects.all().count(), 1) self.assertEqual(Zaak.objects.get().pk, zaak.pk)
def test_read_superuser(self): """ superuser read everything """ self.applicatie.heeft_alle_autorisaties = True self.applicatie.save() ZaakFactory.create( zaaktype='https://zaaktype.nl/ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar) ZaakFactory.create( zaaktype='https://zaaktype.nl/not_ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar) ZaakFactory.create( zaaktype='https://zaaktype.nl/ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. zeer_geheim) ZaakFactory.create( zaaktype='https://zaaktype.nl/not_ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. zeer_geheim) url = reverse('zaak-list') response = self.client.get(url, **ZAAK_READ_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK) results = response.data['results'] self.assertEqual(len(results), 4)
def test_zaak_list(self): """ Assert you can only list ZAAKen of the zaaktypes and vertrouwelijkheidaanduiding of your authorization """ ZaakFactory.create( zaaktype='https://zaaktype.nl/ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar) ZaakFactory.create( zaaktype='https://zaaktype.nl/not_ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar) ZaakFactory.create( zaaktype='https://zaaktype.nl/ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. zeer_geheim) ZaakFactory.create( zaaktype='https://zaaktype.nl/not_ok', vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. zeer_geheim) url = reverse('zaak-list') response = self.client.get(url, **ZAAK_READ_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK) results = response.data['results'] self.assertEqual(len(results), 1) self.assertEqual(results[0]['zaaktype'], 'https://zaaktype.nl/ok') self.assertEqual(results[0]['vertrouwelijkheidaanduiding'], VertrouwelijkheidsAanduiding.openbaar)
def test_deelzaken(self): hoofdzaak = ZaakFactory.create() deelzaak = ZaakFactory.create(hoofdzaak=hoofdzaak) detail_url = reverse(hoofdzaak) deelzaak_url = reverse(deelzaak) token = generate_jwt(scopes=self.scopes, zaaktypes=[hoofdzaak.zaaktype]) self.client.credentials(HTTP_AUTHORIZATION=token) response = self.client.get(detail_url, **ZAAK_READ_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['deelzaken'], [f"http://testserver{deelzaak_url}"])
def test_cannot_have_multiple_levels(self): """ Deelzaak kan enkel deelzaak zijn van hoofdzaak en niet andere deelzaken. """ url = reverse('zaak-list') hoofdzaak = ZaakFactory.create() deelzaak = ZaakFactory.create(hoofdzaak=hoofdzaak) deelzaak_url = reverse('zaak-detail', kwargs={'uuid': deelzaak.uuid}) response = self.client.post(url, {'hoofdzaak': deelzaak_url}, **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, 'hoofdzaak') self.assertEqual(error['code'], 'deelzaak-als-hoofdzaak')
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_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_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 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_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_update_zaak(self): zaak = ZaakFactory.create() zaak_url = reverse('zaak-detail', kwargs={ 'version': '1', 'uuid': zaak.uuid, }) zio = ZaakInformatieObjectFactory.create( informatieobject=INFORMATIEOBJECT) zio_detail_url = reverse('zaakinformatieobject-detail', kwargs={ 'version': '1', 'uuid': zio.uuid, }) response = self.client.patch( zio_detail_url, { 'zaak': f'http://testserver{zaak_url}', 'informatieobject': 'https://bla.com', }) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) for field in ['zaak', 'informatieobject']: with self.subTest(field=field): error = get_validation_errors(response, field) self.assertEqual(error['code'], IsImmutableValidator.code)
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, **ZAAK_WRITE_KWARGS) data = response.json() zaak_update_url = get_operation_url('zaak_update', uuid=zaak.uuid) data['kenmerken'].append({ 'kenmerk': 'kenmerk 2', 'bron': 'bron 2', }) data['verlenging'] = None data['opschorting'] = None response = self.client.put(zaak_update_url, data, **ZAAK_WRITE_KWARGS) 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_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_cannot_set_archiefstatus_when_not_all_documents_are_gearchiveerd( self): zaak = ZaakFactory.create( archiefnominatie=Archiefnominatie.vernietigen, archiefactiedatum=date.today(), zaaktype=ZAAKTYPE) zio = ZaakInformatieObjectFactory.create( zaak=zaak, informatieobject=ENKELVOUDIGINFORMATIEOBJECT, ) zaak_patch_url = get_operation_url('zaak_partial_update', uuid=zaak.uuid) data = {'archiefstatus': Archiefstatus.gearchiveerd} responses = { ENKELVOUDIGINFORMATIEOBJECT: { 'url': ENKELVOUDIGINFORMATIEOBJECT, 'status': 'in_bewerking', }, } with mock_client(responses): response = self.client.patch(zaak_patch_url, data, **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data)
def test_create_rol_with_identificatie(self): url = get_operation_url('rol_create') zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) data = { 'zaak': f'http://testserver{zaak_url}', 'betrokkene_type': RolTypes.natuurlijk_persoon, 'rolomschrijving': 'Initiator', 'roltoelichting': 'awerw', 'betrokkeneIdentificatie': { 'nummerAnderNatuurlijkPersoon': '12345', } } response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Rol.objects.count(), 1) self.assertEqual(NatuurlijkPersoon.objects.count(), 1) self.assertEqual(NietNatuurlijkPersoon.objects.count(), 0) rol = Rol.objects.get() natuurlijk_persoon = NatuurlijkPersoon.objects.get() self.assertEqual(rol.natuurlijkpersoon, natuurlijk_persoon) self.assertEqual(natuurlijk_persoon.nummer_ander_natuurlijk_persoon, '12345')
def test_update_zaak(self, *mocks): zaak = ZaakFactory.create() zaak_url = reverse("zaak-detail", kwargs={ "version": "1", "uuid": zaak.uuid }) zio = ZaakInformatieObjectFactory.create( informatieobject=INFORMATIEOBJECT) zio_detail_url = reverse("zaakinformatieobject-detail", kwargs={ "version": "1", "uuid": zio.uuid }) response = self.client.patch( zio_detail_url, { "zaak": f"http://testserver{zaak_url}", "informatieobject": "https://bla.com", }, ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) for field in ["zaak", "informatieobject"]: with self.subTest(field=field): error = get_validation_errors(response, field) self.assertEqual(error["code"], IsImmutableValidator.code)
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_sync_create_fails(self): self.mocked_sync_create.side_effect = SyncError("Sync failed") zaak = ZaakFactory.create(zaaktype=ZAAKTYPE) zaak_url = reverse("zaak-detail", kwargs={ "version": "1", "uuid": zaak.uuid }) content = { "informatieobject": INFORMATIEOBJECT, "zaak": f"http://testserver{zaak_url}", } # Send to the API with mock_client(RESPONSES): response = self.client.post(self.list_url, content) # Test response self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) # transaction must be rolled back self.assertFalse(ZaakInformatieObject.objects.exists())
def test_meerdere_coordinatoren_verboden(self, *mocks): """ 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(zaaktype=ZAAKTYPE) RolFactory.create( zaak=zaak, betrokkene_type=RolTypes.natuurlijk_persoon, omschrijving=RolOmschrijving.zaakcoordinator, omschrijving_generiek=RolOmschrijving.zaakcoordinator, ) zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) url = get_operation_url("rol_create") with requests_mock.Mocker() as m: m.get(ROLTYPE3, json=ROLTYPE3_RESPONSE) with mock_client({ROLTYPE3: ROLTYPE3_RESPONSE}): response = self.client.post( url, { "zaak": zaak_url, "betrokkene": WATERNET, "betrokkeneType": RolTypes.organisatorische_eenheid, "roltype": ROLTYPE3, "roltoelichting": "Melder", }, ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)