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) statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) StatusTypeFactory.create(zaaktype=zaak.zaaktype) data = { "zaak": zaak_url, "statustype": f"http://testserver{statustype_url}", "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}", "uuid": str(status_.uuid), "zaak": f"http://testserver{zaak_url}", "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": "2018-06-06T17:23:43Z", # UTC "statustoelichting": "", }, )
def setUpTestData(cls): super().setUpTestData() cls.zaaktype = ZaakTypeFactory.create() StatusTypeFactory.create(zaaktype=cls.zaaktype) statustype_end = StatusTypeFactory.create(zaaktype=cls.zaaktype) cls.statustype_end_url = reverse(statustype_end)
def test_reopenzaak_allowed(self): zaak = ZaakFactory.create( einddatum=timezone.now(), archiefactiedatum="2020-01-01", archiefnominatie=Archiefnominatie.blijvend_bewaren, zaaktype=self.zaaktype, ) statustype = StatusTypeFactory.create(zaaktype=self.zaaktype) StatusTypeFactory.create(zaaktype=self.zaaktype) statustype_url = reverse(statustype) StatusTypeFactory.create() status_create_url = get_operation_url("status_create") self.autorisatie.scopes = [SCOPEN_ZAKEN_HEROPENEN] self.autorisatie.save() data = { "zaak": reverse(zaak), "statustype": statustype_url, "datumStatusGezet": datetime.datetime.now().isoformat(), } response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) zaak.refresh_from_db() self.assertIsNone(zaak.einddatum) self.assertIsNone(zaak.archiefactiedatum) self.assertIsNone(zaak.archiefnominatie)
def setUpTestData(cls): cls.zaaktype = ZaakTypeFactory.create(concept=False) cls.zaaktype_url = reverse(cls.zaaktype) cls.statustype = StatusTypeFactory.create(zaaktype=cls.zaaktype) cls.statustype_url = reverse(cls.statustype) cls.statustype2 = StatusTypeFactory.create(zaaktype=cls.zaaktype) cls.statustype2_url = reverse(cls.statustype2) super().setUpTestData()
def zet_statussen_resultaat(self): statustype = StatusTypeFactory.create( zaaktype=self.references["zaaktype"]) statustype_url = reverse(statustype) statustype_overlast_geconstateerd = StatusTypeFactory.create( zaaktype=self.references["zaaktype"]) statustype_overlast_geconstateerd_url = reverse( statustype_overlast_geconstateerd) resultaattype = ResultaatTypeFactory.create( zaaktype=self.references["zaaktype"], archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.afgehandeld, ) resultaattype_url = reverse(resultaattype) status_create_url = get_operation_url("status_create") resultaat_create_url = get_operation_url("resultaat_create") created = parser.parse(self.data["datetime"]) self.client.post( status_create_url, { "zaak": self.references["zaak_url"], "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": created.isoformat(), }, ) self.client.post( resultaat_create_url, { "zaak": self.references["zaak_url"], "resultaattype": f"http://testserver{resultaattype_url}", "toelichting": "", }, ) self.client.post( status_create_url, { "zaak": self.references["zaak_url"], "statustype": f"http://testserver{statustype_overlast_geconstateerd_url}", "datumStatusGezet": parser.parse(self.data["datetime_overlast"]).isoformat(), }, ) self.references["statustype"] = statustype self.references[ "statustype_overlast_geconstateerd"] = statustype_overlast_geconstateerd
def test_add_resultaat_on_zaak_with_remote_zaakobjecten_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_object1 = ZaakObjectFactory.create(zaak=zaak) zaak_object2 = ZaakObjectFactory.create( zaak=zaak, object_type=zaak_object1.object_type) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.zaakobject, brondatum_archiefprocedure_datumkenmerk="einddatum", brondatum_archiefprocedure_objecttype=zaak_object1.object_type, zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) responses = { zaak_object1.object: { "einddatum": isodatetime(2019, 1, 1) }, zaak_object2.object: { "einddatum": isodatetime(2022, 1, 1) }, } # add resultaat resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "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") statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) data = { "zaak": zaak_url, "statustype": f"http://testserver{statustype_url}", "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(2032, 1, 1))
def test_add_resultaat_on_zaak_with_external_gerelateerde_zaak_(self): """ Add RESULTAAT that causes `archiefactiedatum` to be set. """ zaak = ZaakFactory.create() zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) zaaktype_url = f"http://testserver.com{reverse(zaak.zaaktype)}" zaak2 = "https://external.nl/zaken/123" zaak2_data = get_zaak_response(zaak2, zaaktype_url) zaak2_data["einddatum"] = "2022-01-01" zaak3 = "https://external.nl/zaken/456" zaak3_data = get_zaak_response(zaak3, zaaktype_url) zaak3_data["einddatum"] = "2025-01-01" RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak2) RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak3) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P5Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.gerelateerde_zaak, brondatum_archiefprocedure_procestermijn=None, zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": f"http://testserver.com{zaak_url}", "resultaattype": f"http://testserver.com{resultaattype_url}", "toelichting": "", } response = self.client.post(resultaat_create_url, data, HTTP_HOST="testserver.com") 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") statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) data = { "zaak": f"http://testserver.com{zaak_url}", "statustype": f"http://testserver.com{statustype_url}", "datumStatusGezet": "2018-10-18T20:00:00Z", } with requests_mock.Mocker(real_http=True) as m: m.register_uri("GET", zaak2, json=zaak2_data) m.register_uri("GET", zaak3, json=zaak3_data) response = self.client.post(status_create_url, data, HTTP_HOST="testserver.com") self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
def test_statussen(self): statustype = StatusTypeFactory.create(zaaktype=self.zaaktype) self.assertCreateBlocked( reverse(Status), { "zaak": reverse(self.zaak), "statustype": f"http://testserver{reverse(statustype)}", }, )
def test_add_resultaat_on_zaak_with_afleidingswijze_gerelateerde_zaak_causes_archiefactiedatum_to_be_set( self, ): """ Add RESULTAAT that causes `archiefactiedatum` to be set. """ zaak = ZaakFactory.create() zaak2 = ZaakFactory.create(einddatum="2022-01-01") zaak3 = ZaakFactory.create(einddatum="2025-01-01") RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak2) RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak3) zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P5Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.gerelateerde_zaak, brondatum_archiefprocedure_procestermijn=None, zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": f"http://testserver.com{zaak_url}", "resultaattype": f"http://testserver.com{resultaattype_url}", "toelichting": "", } response = self.client.post(resultaat_create_url, data, HTTP_HOST="testserver.com") 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") statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) data = { "zaak": f"http://testserver.com{zaak_url}", "statustype": f"http://testserver.com{statustype_url}", "datumStatusGezet": "2018-10-18T20:00:00Z", } response = self.client.post(status_create_url, data, HTTP_HOST="testserver.com") self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) zaak.refresh_from_db() self.assertEqual(zaak.archiefactiedatum, date(2030, 1, 1))
def test_status_create_fail_send_notification_create_db_entry(self): url = get_operation_url("status_create") zaak = ZaakFactory.create( einddatum=now(), archiefactiedatum="2020-01-01", archiefnominatie=Archiefnominatie.blijvend_bewaren, ) zaak_url = reverse(zaak) ResultaatFactory.create( zaak=zaak, resultaattype__brondatum_archiefprocedure_afleidingswijze= Afleidingswijze.ander_datumkenmerk, ) statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) data = { "zaak": f"http://testserver{zaak_url}", "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": "2019-01-01T12:00:00Z", } with capture_on_commit_callbacks(execute=True): response = self.client.post(url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) data = response.json() self.assertEqual(StatusLog.objects.count(), 1) logged_warning = StatusLog.objects.get() failed = FailedNotification.objects.get() message = { "aanmaakdatum": "2019-01-01T12:00:00Z", "actie": "create", "hoofdObject": f"http://testserver{zaak_url}", "kanaal": "zaken", "kenmerken": { "bronorganisatie": zaak.bronorganisatie, "zaaktype": f"http://testserver{reverse(zaak.zaaktype)}", "vertrouwelijkheidaanduiding": zaak.vertrouwelijkheidaanduiding, }, "resource": "status", "resourceUrl": data["url"], } self.assertEqual(failed.statuslog_ptr, logged_warning) self.assertEqual(failed.message, message)
def test_add_resultaat_on_zaak_with_eigenschap_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) ZaakEigenschapFactory.create(zaak=zaak, _naam="brondatum", waarde=isodatetime(2019, 1, 1)) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.eigenschap, brondatum_archiefprocedure_datumkenmerk="brondatum", zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "toelichting": "", } self.assertIsNone(zaak.archiefactiedatum) 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 statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) status_create_url = get_operation_url("status_create") data = { "zaak": zaak_url, "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": "2018-10-18T20:00:00Z", } 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_add_resultaat_on_zaak_with_ander_datumkenmerk_causes_archiefactiedatum_to_remain_empty( self, ): """ Add RESULTAAT that causes `archiefactiedatum` to remain empty. It needs to be manually set based on the information in the RESULTAATTYPE. """ zaak = ZaakFactory.create() zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.ander_datumkenmerk, brondatum_archiefprocedure_datumkenmerk="einddatum", brondatum_archiefprocedure_registratie= "LichtgevendeObjectenRegistratie", brondatum_archiefprocedure_objecttype="Lantaarnpaal", zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) # add resultaat resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "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") statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) data = { "zaak": zaak_url, "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": "2018-10-18T20:00:00Z", } response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) zaak.refresh_from_db() self.assertIsNone(zaak.archiefactiedatum)
def test_reopenzaak_not_allowed(self): zaak = ZaakFactory.create(einddatum=timezone.now(), zaaktype=self.zaaktype) statustype = StatusTypeFactory.create(zaaktype=self.zaaktype) StatusTypeFactory.create(zaaktype=self.zaaktype) statustype_url = reverse(statustype) StatusTypeFactory.create() status_create_url = get_operation_url("status_create") self.autorisatie.scopes = [SCOPE_STATUSSEN_TOEVOEGEN] self.autorisatie.save() data = { "zaak": reverse(zaak), "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": datetime.datetime.now().isoformat(), } response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) data = response.json() self.assertEqual( data["detail"], "Reopening a closed case with current scope is forbidden" )
def test_add_resultaat_on_zaak_with_afleidingswijze_gerelateerde_zaak_without_relevante_zaken_gives_400( self, ): """ Add RESULTAAT that causes `archiefactiedatum` to be set. """ zaak = ZaakFactory.create() zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P5Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.gerelateerde_zaak, brondatum_archiefprocedure_procestermijn=None, zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "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") statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) data = { "zaak": zaak_url, "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": "2018-10-18T20:00:00Z", } response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(error["code"], "archiefactiedatum-error") zaak.refresh_from_db() self.assertEqual(zaak.archiefactiedatum, None)
def test_add_resultaat_on_zaak_causes_archiefnominatie_to_be_copied(self): """ Add RESULTAAT that causes `archiefnominatie` to be copied from RESULTAATTYPE. """ zaak = ZaakFactory.create() zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) # add a result for the case resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.afgehandeld, zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "toelichting": "", } self.assertIsNone(zaak.archiefnominatie) 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 statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) status_create_url = get_operation_url("status_create") data = { "zaak": zaak_url, "statustype": f"http://testserver{statustype_url}", "datumStatusGezet": "2018-10-18T20:00:00Z", } 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.archiefnominatie, Archiefnominatie.blijvend_bewaren)
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)) zaak = ZaakFactory.create(hoofdzaak=hoofd_zaak) zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.hoofdzaak, zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) # add resultaat resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": resultaattype_url, "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 statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) status_create_url = get_operation_url("status_create") data = { "zaak": zaak_url, "statustype": statustype_url, "datumStatusGezet": "2018-10-18T20:00:00Z", } 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_create_status(self): zaak = ZaakFactory.create() zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) add_url = reverse("admin:zaken_status_add") data = { "uuid": uuid.uuid4(), "zaak": zaak.id, "_statustype": statustype.id, "datum_status_gezet_0": date(2018, 1, 1), "datum_status_gezet_1": time(10, 0, 0), } self.client.post(add_url, data) self.assertEqual(Status.objects.count(), 1) status = Status.objects.get() status_url = get_operation_url("status_read", uuid=status.uuid) self.assertEqual(AuditTrail.objects.count(), 1) audittrail = AuditTrail.objects.get() self.assertEqual(audittrail.bron, "ZRC") self.assertEqual(audittrail.actie, "create") self.assertEqual(audittrail.resultaat, 0) self.assertEqual(audittrail.applicatie_weergave, "admin") self.assertEqual(audittrail.gebruikers_id, f"{self.user.id}"), self.assertEqual(audittrail.gebruikers_weergave, self.user.get_full_name()), self.assertEqual(audittrail.hoofd_object, f"http://testserver{zaak_url}"), self.assertEqual(audittrail.resource, "status"), self.assertEqual(audittrail.resource_url, f"http://testserver{status_url}"), self.assertEqual(audittrail.resource_weergave, status.unique_representation()), self.assertEqual(audittrail.oud, None) new_data = audittrail.nieuw self.assertEqual(new_data["datum_status_gezet"], "2018-01-01T10:00:00Z")
def test_add_resultaat_on_zaak_with_incorrect_eigenschap_fails(self): """ Attempt to add RESULTAAT with incorrect ZTC-configuration. """ zaak = ZaakFactory.create() zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid) resultaattype = ResultaatTypeFactory.create( archiefactietermijn="P10Y", archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze= BrondatumArchiefprocedureAfleidingswijze.eigenschap, brondatum_archiefprocedure_datumkenmerk="brondatum", zaaktype=zaak.zaaktype, ) resultaattype_url = reverse(resultaattype) # add resultaat resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "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 statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) statustype_url = reverse(statustype) status_create_url = get_operation_url("status_create") data = { "zaak": zaak_url, "statustype": statustype_url, "datumStatusGezet": "2018-10-18T20:00:00Z", } response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
def test_create_malformed_uuid(self): """ Assert that providing a malformed ZAAK URL raises validation errors. Regression test for https://github.com/open-zaak/open-zaak/issues/604 """ zaak = ZaakFactory.create() statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype) zaak_url = f"http://testserver{reverse(zaak)}" data = { "zaak": f"{zaak_url} ", # trailing space is deliberate! "statustype": f"http://testserver{reverse(statustype)}", "datumStatusGezet": "2020-05-28", } response = self.client.post(reverse("status-list"), data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, "zaak") self.assertIsNotNone(error) self.assertEqual(error["code"], "invalid")
def test_zaak_archiefactiedatum_afleidingswijze_ingangsdatum_besluit(self): zaaktype = ZaakTypeFactory.create() zaak = ZaakFactory.create(zaaktype=zaaktype) zaak_url = reverse(zaak) statustype1 = StatusTypeFactory.create(zaaktype=zaaktype) statustype1_url = reverse(statustype1) statustype2 = StatusTypeFactory.create(zaaktype=zaaktype) statustype2_url = reverse(statustype2) resultaattype = ResultaatTypeFactory.create( zaaktype=zaaktype, archiefactietermijn=relativedelta(years=10), archiefnominatie=Archiefnominatie.blijvend_bewaren, brondatum_archiefprocedure_afleidingswijze=BrondatumArchiefprocedureAfleidingswijze.ingangsdatum_besluit, ) resultaattype_url = reverse(resultaattype) BesluitFactory.create(zaak=zaak, ingangsdatum="2020-05-03") # Set initial status status_list_url = reverse("status-list") response = self.client.post( status_list_url, { "zaak": zaak_url, "statustype": f"http://testserver{statustype1_url}", "datumStatusGezet": isodatetime(2018, 10, 1, 10, 00, 00), }, ) self.assertEqual( response.status_code, status.HTTP_201_CREATED, response.content ) zaak.refresh_from_db() self.assertIsNone(zaak.einddatum) # add a result for the case resultaat_create_url = get_operation_url("resultaat_create") data = { "zaak": zaak_url, "resultaattype": f"http://testserver{resultaattype_url}", "toelichting": "", } response = self.client.post(resultaat_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) # Set eindstatus datum_status_gezet = utcdatetime(2018, 10, 22, 10, 00, 00) response = self.client.post( status_list_url, { "zaak": zaak_url, "statustype": f"http://testserver{statustype2_url}", "datumStatusGezet": datum_status_gezet.isoformat(), }, ) self.assertEqual( response.status_code, status.HTTP_201_CREATED, response.content ) zaak.refresh_from_db() self.assertEqual(zaak.einddatum, datum_status_gezet.date()) self.assertEqual( zaak.archiefactiedatum, date(2030, 5, 3) # 2020-05-03 + 10 years )
def test_full_flow(self): zaaktype = ZaakTypeFactory.create() zaaktype_url = reverse(zaaktype) zaak_create_url = get_operation_url("zaak_create") zaakobject_create_url = get_operation_url("zaakobject_create") status_create_url = get_operation_url("status_create") rol_create_url = get_operation_url("rol_create") # Creeer InzageVerzoek # self.client.post(...) # Creeer Zaak data = { "zaaktype": zaaktype_url, "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar, "bronorganisatie": "517439943", "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE, "identificatie": "AVG-inzageverzoek-1", "omschrijving": "Melding binnengekomen via website.", "toelichting": "Vanuit melding: Beste,\n\nGraag zou ik ...", "startdatum": "2018-08-22", "kenmerken": [ {"kenmerk": "kenmerk 1", "bron": "bron 1"}, {"kenmerk": "kenmerk 2", "bron": "bron 2"}, ], } response = self.client.post(zaak_create_url, data, **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) zaak = response.json() # Koppel Zaak aan InzageVerzoek data = { "zaak": zaak["url"], "object": AVG_INZAGE_VERZOEK, "relatieomschrijving": "Inzage verzoek horend bij deze zaak.", "objectType": ZaakobjectTypes.adres, } response = self.client.post(zaakobject_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) # Geef de Zaak een initiele Status statustype = StatusTypeFactory.create(zaaktype=zaaktype) statustype_url = reverse(statustype) StatusTypeFactory.create(zaaktype=zaaktype) data = { "zaak": zaak["url"], "statustype": statustype_url, "datumStatusGezet": datetime.datetime.now().isoformat(), } response = self.client.post(status_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) # Haal mogelijke rollen op uit ZTC... # self.client.get(...) # Voeg een behandelaar toe. roltype = RolTypeFactory.create( zaaktype=zaaktype, omschrijving=RolOmschrijving.behandelaar, omschrijving_generiek=RolOmschrijving.behandelaar, ) roltype_url = reverse(roltype) data = { "zaak": zaak["url"], "betrokkene": BEHANDELAAR, "betrokkeneType": RolTypes.natuurlijk_persoon, "roltype": roltype_url, "roltoelichting": "Initiele behandelaar die meerdere (deel)behandelaren kan aanwijzen.", } response = self.client.post(rol_create_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) # Status wijzigingen... # Update Zaak met nieuwe behandeltermijn, uitstel van 2 weken. zaak_update_url = get_operation_url( "zaak_update", uuid=zaak["url"].rsplit("/", 1)[1] ) if zaak["einddatumGepland"]: end_date_planned = parse_isodatetime(zaak["einddatumGepland"]) else: end_date_planned = datetime.datetime.now() data = zaak.copy() data["verlenging"] = None data["opschorting"] = None data["einddatumGepland"] = ( end_date_planned + datetime.timedelta(days=14) ).strftime("%Y-%m-%d") response = self.client.put(zaak_update_url, data, **ZAAK_WRITE_KWARGS) self.assertEqual(response.status_code, status.HTTP_200_OK, response.data)