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_list_zaakobject_limited_to_authorized_zaken(self): url = reverse('zaakobject-list') # must show up zaakobject = ZaakObjectFactory.create( zaak__zaaktype='https://zaaktype.nl/ok', zaak__vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. openbaar) # must not show up ZaakObjectFactory.create( zaak__zaaktype='https://zaaktype.nl/ok', zaak__vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. vertrouwelijk) # must not show up ZaakObjectFactory.create( zaak__zaaktype='https://zaaktype.nl/not_ok', zaak__vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding. openbaar) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(len(response_data), 1) self.assertEqual(response_data[0]['url'], f"http://testserver{reverse(zaakobject)}")
def test_filter_object(self): zaakobject1 = ZaakObjectFactory.create( object="http://example.com/objects/1") zaakobject2 = ZaakObjectFactory.create( object="http://example.com/objects/2") zaakobject1_url = get_operation_url("zaakobject_read", uuid=zaakobject1.uuid) url = get_operation_url("zaakobject_list") response = self.client.get(url, {"object": "http://example.com/objects/1"}) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json()["results"] self.assertEqual(len(data), 1) self.assertEqual(data[0]["url"], f"http://testserver{zaakobject1_url}")
def test_filter_type(self): zaakobject1 = ZaakObjectFactory.create( object_type=ZaakobjectTypes.besluit) zaakobject2 = ZaakObjectFactory.create( object_type=ZaakobjectTypes.adres) zaakobject1_url = get_operation_url("zaakobject_read", uuid=zaakobject1.uuid) url = get_operation_url("zaakobject_list") response = self.client.get(url, {"objectType": ZaakobjectTypes.besluit}) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json()["results"] self.assertEqual(len(data), 1) self.assertEqual(data[0]["url"], f"http://testserver{zaakobject1_url}")
def test_filter_zaak(self): zaakobject1 = ZaakObjectFactory.create() zaakobject2 = ZaakObjectFactory.create() zaak = zaakobject1.zaak zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) zaakobject1_url = get_operation_url("zaakobject_read", uuid=zaakobject1.uuid) url = get_operation_url("zaakobject_list") response = self.client.get( url, {"zaak": f"http://testserver.com{zaak_url}"}, HTTP_HOST="testserver.com", ) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json()["results"] self.assertEqual(len(data), 1) self.assertEqual(data[0]["url"], f"http://testserver.com{zaakobject1_url}")
def test_add_resultaat_on_zaak_with_zaakobject_causes_archiefactiedatum_to_be_set( self): """ Add RESULTAAT that causes `archiefactiedatum` to be set. """ zaak = ZaakFactory.create() zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) zaak_object = ZaakObjectFactory.create(zaak=zaak) resultaat_create_url = get_operation_url('resultaat_create') data = { 'zaak': zaak_url, 'resultaatType': RESULTAATTYPE, 'toelichting': '', } responses = { zaak_object.object: { 'einddatum': isodatetime(2019, 1, 1) }, RESULTAATTYPE: { 'url': RESULTAATTYPE, 'archiefactietermijn': 'P10Y', 'archiefnominatie': Archiefnominatie.blijvend_bewaren, 'brondatumArchiefprocedure': { 'afleidingswijze': BrondatumArchiefprocedureAfleidingswijze.zaakobject, 'datumkenmerk': 'einddatum', 'objecttype': zaak_object.object_type, 'procestermijn': None, } } } with mock_client(responses): response = self.client.post(resultaat_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_cannot_read_without_correct_scope(self): zaak = ZaakFactory.create() status = StatusFactory.create() zaak_object = ZaakObjectFactory.create() resultaat = ResultaatFactory.create() urls = [ reverse('zaak-list'), reverse(zaak), reverse('status-list'), reverse(status), reverse('status-list'), reverse(resultaat), reverse('zaakobject-list'), reverse(zaak_object), ] for url in urls: with self.subTest(url=url): self.assertForbidden(url, method='get', request_kwargs=ZAAK_READ_KWARGS)
def test_send_notif_update_zaakobject(self, mock_client): """ Check if notifications will be send when zaakobject is updated """ client = mock_client.return_value zaak = ZaakFactory.create(zaaktype=ZAAKTYPE) zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) zaakobject = ZaakObjectFactory.create(zaak=zaak, relatieomschrijving="old") zaakobject_url = get_operation_url("zaakobject_update", uuid=zaakobject.uuid) with capture_on_commit_callbacks(execute=True): response = self.client.patch(zaakobject_url, {"relatieomschrijving": "new"}) self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) client.create.assert_called_once_with( "notificaties", { "kanaal": "zaken", "hoofdObject": f"http://testserver{zaak_url}", "resource": "zaakobject", "resourceUrl": f"http://testserver{zaakobject_url}", "actie": "partial_update", "aanmaakdatum": "2012-01-14T00:00:00Z", "kenmerken": { "bronorganisatie": zaak.bronorganisatie, "zaaktype": zaak.zaaktype, "vertrouwelijkheidaanduiding": zaak.vertrouwelijkheidaanduiding, }, }, )
def test_add_resultaat_on_zaak_with_zaakobject_causes_archiefactiedatum_to_be_set( self): """ Add RESULTAAT that causes `archiefactiedatum` to be set. """ zaak = ZaakFactory.create(zaaktype=ZAAKTYPE) zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid) zaak_object = ZaakObjectFactory.create(zaak=zaak) responses = { zaak_object.object: { 'einddatum': isodatetime(2019, 1, 1) }, RESULTAATTYPE: { 'url': RESULTAATTYPE, 'archiefactietermijn': 'P10Y', 'archiefnominatie': Archiefnominatie.blijvend_bewaren, 'brondatumArchiefprocedure': { 'afleidingswijze': BrondatumArchiefprocedureAfleidingswijze.zaakobject, 'datumkenmerk': 'einddatum', 'objecttype': zaak_object.object_type, 'procestermijn': None, } }, STATUSTYPE: { 'url': STATUSTYPE, 'volgnummer': 2, 'isEindstatus': True, } } # add resultaat resultaat_create_url = get_operation_url('resultaat_create') data = { 'zaak': zaak_url, 'resultaatType': RESULTAATTYPE, 'toelichting': '', } with mock_client(responses): 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') 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))