def test_filter_eigenschap_status_alles(self): EigenschapFactory.create(zaaktype__concept=True) EigenschapFactory.create(zaaktype__concept=False) eigenschap_list_url = reverse("eigenschap-list") response = self.client.get(eigenschap_list_url, {"status": "alles"}) self.assertEqual(response.status_code, 200) data = response.json()["results"] self.assertEqual(len(data), 2)
def setUp(self): super().setUp() self.zaaktype = ZaakTypeFactory.create( maakt_deel_uit_van=self.catalogus) specificatie = EigenschapSpecificatieFactory.create( kardinaliteit='1', lengte='1', groep='groep', ) self.eigenschap_one = EigenschapFactory.create( eigenschapnaam='Beoogd product', is_van=self.zaaktype, specificatie_van_eigenschap=specificatie) referentie = EigenschapReferentieFactory.create( x_path_element='x_path_element', namespace='namespace', ) self.eigenschap_two = EigenschapFactory.create( eigenschapnaam='Aard product', is_van=self.zaaktype, referentie_naar_eigenschap=referentie) self.eigenschap_list_url = reverse('api:eigenschap-list', kwargs={ 'version': self.API_VERSION, 'catalogus_pk': self.catalogus.pk, 'zaaktype_pk': self.zaaktype.pk }) self.eigenschap_one_detail_url = reverse('api:eigenschap-detail', kwargs={ 'version': self.API_VERSION, 'catalogus_pk': self.catalogus.pk, 'zaaktype_pk': self.zaaktype.pk, 'pk': self.eigenschap_one.pk }) self.eigenschap_two_detail_url = reverse('api:eigenschap-detail', kwargs={ 'version': self.API_VERSION, 'catalogus_pk': self.catalogus.pk, 'zaaktype_pk': self.zaaktype.pk, 'pk': self.eigenschap_two.pk })
def test_filter_eigenschap_status_concept(self): eigenschap1 = EigenschapFactory.create(zaaktype__concept=True) eigenschap2 = EigenschapFactory.create(zaaktype__concept=False) eigenschap_list_url = reverse('eigenschap-list') eigenschap1_url = reverse('eigenschap-detail', kwargs={'uuid': eigenschap1.uuid}) response = self.client.get(eigenschap_list_url, {'status': 'concept'}) self.assertEqual(response.status_code, 200) data = response.json()['results'] self.assertEqual(len(data), 1) self.assertEqual(data[0]['url'], f'http://testserver{eigenschap1_url}')
def test_filter_eigenschap_status_definitief(self): eigenschap1 = EigenschapFactory.create(zaaktype__concept=True) eigenschap2 = EigenschapFactory.create(zaaktype__concept=False) eigenschap_list_url = reverse("eigenschap-list") eigenschap2_url = reverse( "eigenschap-detail", kwargs={"uuid": eigenschap2.uuid} ) response = self.client.get(eigenschap_list_url, {"status": "definitief"}) self.assertEqual(response.status_code, 200) data = response.json()["results"] self.assertEqual(len(data), 1) self.assertEqual(data[0]["url"], f"http://testserver{eigenschap2_url}")
def test_update_eigenschap_add_relation_to_non_concept_zaaktype_fails(self): zaaktype = ZaakTypeFactory.create(concept=False) zaaktype_url = reverse(zaaktype) eigenschap = EigenschapFactory.create() eigenschap_url = reverse(eigenschap) data = { "naam": "aangepast", "definitie": "test", "toelichting": "", "zaaktype": zaaktype_url, "specificatie": { "groep": "test", "formaat": "tekst", "lengte": "5", "kardinaliteit": "1", "waardenverzameling": [], }, } response = self.client.put(eigenschap_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(error["code"], ZaakTypeConceptValidator.code)
def test_get_detail_reference(self): referentie = EigenschapReferentieFactory.create( x_path_element='x_path_element', namespace='namespace', ) eigenschap = EigenschapFactory.create( eigenschapnaam='Aard product', referentie_naar_eigenschap=referentie) eigenschap_detail_url = reverse('eigenschap-detail', kwargs={'uuid': eigenschap.uuid}) response = self.api_client.get(eigenschap_detail_url) self.assertEqual(response.status_code, 200) data = response.json() self.assertIsNone(data['specificatie']) self.assertEqual( data['referentie'], { 'pathElement': 'x_path_element', 'informatiemodel': None, 'namespace': 'namespace', 'entiteittype': '', 'schemalocatie': '', 'objecttype': None }, )
def test_conditional_get_stale(self): eigenschap = EigenschapFactory.create(with_etag=True) response = self.client.get(reverse(eigenschap), HTTP_IF_NONE_MATCH=f'"not-an-md5"') self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_get_detail(self): zaaktype = ZaakTypeFactory.create(catalogus=self.catalogus) zaaktype_url = reverse('zaaktype-detail', kwargs={'uuid': zaaktype.uuid}) specificatie = EigenschapSpecificatieFactory.create( kardinaliteit='1', lengte='1', groep='groep', ) eigenschap = EigenschapFactory.create( eigenschapnaam='Beoogd product', zaaktype=zaaktype, specificatie_van_eigenschap=specificatie) eigenschap_detail_url = reverse('eigenschap-detail', kwargs={'uuid': eigenschap.uuid}) response = self.api_client.get(eigenschap_detail_url) self.assertEqual(response.status_code, 200) expected = { 'url': 'http://testserver{}'.format(eigenschap_detail_url), 'naam': 'Beoogd product', 'definitie': '', 'specificatie': { 'formaat': '', 'groep': 'groep', 'kardinaliteit': '1', 'lengte': '1', 'waardenverzameling': [] }, 'toelichting': '', 'zaaktype': 'http://testserver{}'.format(zaaktype_url), } self.assertEqual(expected, response.json())
def test_get_detail_reference(self): referentie = EigenschapReferentieFactory.create( x_path_element="x_path_element", namespace="namespace" ) eigenschap = EigenschapFactory.create( eigenschapnaam="Aard product", referentie_naar_eigenschap=referentie ) eigenschap_detail_url = reverse( "eigenschap-detail", kwargs={"uuid": eigenschap.uuid} ) response = self.api_client.get(eigenschap_detail_url) self.assertEqual(response.status_code, 200) data = response.json() self.assertIsNone(data["specificatie"]) self.assertEqual( data["referentie"], { "pathElement": "x_path_element", "informatiemodel": None, "namespace": "namespace", "entiteittype": "", "schemalocatie": "", "objecttype": None, }, )
def test_get_detail(self): zaaktype = ZaakTypeFactory.create(catalogus=self.catalogus) zaaktype_url = reverse("zaaktype-detail", kwargs={"uuid": zaaktype.uuid}) specificatie = EigenschapSpecificatieFactory.create( kardinaliteit="1", lengte="1", groep="groep" ) eigenschap = EigenschapFactory.create( eigenschapnaam="Beoogd product", zaaktype=zaaktype, specificatie_van_eigenschap=specificatie, ) eigenschap_detail_url = reverse( "eigenschap-detail", kwargs={"uuid": eigenschap.uuid} ) response = self.api_client.get(eigenschap_detail_url) self.assertEqual(response.status_code, 200) expected = { "url": "http://testserver{}".format(eigenschap_detail_url), "naam": "Beoogd product", "definitie": "", "specificatie": { "formaat": "", "groep": "groep", "kardinaliteit": "1", "lengte": "1", "waardenverzameling": [], }, "toelichting": "", "zaaktype": "http://testserver{}".format(zaaktype_url), } self.assertEqual(expected, response.json())
def test_delete_eigenschap(self): eigenschap = EigenschapFactory.create() eigenschap_url = reverse("eigenschap-detail", kwargs={"uuid": eigenschap.uuid}) response = self.client.delete(eigenschap_url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertFalse(Eigenschap.objects.filter(id=eigenschap.id))
def test_partial_update_eigenschap_fail_not_concept_zaaktype(self): zaaktype = ZaakTypeFactory.create(concept=False) eigenschap = EigenschapFactory.create(zaaktype=zaaktype) eigenschap_url = reverse(eigenschap) response = self.client.patch(eigenschap_url, {"naam": "aangepast"}) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(error["code"], ZaakTypeConceptValidator.code)
def test_partial_update_eigenschap(self): eigenschap = EigenschapFactory.create() eigenschap_url = reverse(eigenschap) response = self.client.patch(eigenschap_url, {"naam": "aangepast"}) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["naam"], "aangepast") eigenschap.refresh_from_db() self.assertEqual(eigenschap.eigenschapnaam, "aangepast")
def test_delete_eigenschap_fail_not_concept_zaaktype(self): eigenschap = EigenschapFactory.create(zaaktype__concept=False) informatieobjecttypee_url = reverse( "eigenschap-detail", kwargs={"uuid": eigenschap.uuid} ) response = self.client.delete(informatieobjecttypee_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(error["code"], "non-concept-zaaktype")
def test_delete_eigenschap_fail_not_concept_zaaktype(self): eigenschap = EigenschapFactory.create(zaaktype__concept=False) informatieobjecttypee_url = reverse('eigenschap-detail', kwargs={'uuid': eigenschap.uuid}) response = self.client.delete(informatieobjecttypee_url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) data = response.json() self.assertEqual(data['detail'], 'Alleen concepten kunnen worden verwijderd.')
def test_no_changes_gives_304(self): """ Because no changes are made to the eigenschap, a code 304 should be returned """ eigenschap = EigenschapFactory.create(toelichting="bla") eigenschap._etag = calculate_etag(eigenschap) eigenschap.save(update_fields=["_etag"]) etag = eigenschap._etag response = self.client.get(reverse(eigenschap), HTTP_IF_NONE_MATCH=f'"{etag}"') self.assertEqual(response.status_code, status.HTTP_304_NOT_MODIFIED)
def test_invalidate_etag_after_change(self): """ Because changes are made to the eigenschap, a code 200 should be returned """ eigenschap = EigenschapFactory.create(toelichting="bla", with_etag=True) eigenschap._etag = calculate_etag(eigenschap) eigenschap.save(update_fields=["_etag"]) etag = eigenschap._etag eigenschap.toelichting = "same" eigenschap.save() response = self.client.get(reverse(eigenschap), HTTP_IF_NONE_MATCH=f'"{etag}"') self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_update_eigenschap(self): zaaktype = ZaakTypeFactory.create() zaaktype_url = reverse(zaaktype) specificatie = EigenschapSpecificatieFactory.create() eigenschap = EigenschapFactory.create(specificatie_van_eigenschap=specificatie) eigenschap_url = reverse(eigenschap) data = { "naam": "aangepast", "definitie": "test", "toelichting": "", "zaaktype": zaaktype_url, "specificatie": { "groep": "test", "formaat": "tekst", "lengte": "5", "kardinaliteit": "1", "waardenverzameling": [], }, } response = self.client.put(eigenschap_url, data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["naam"], "aangepast") eigenschap.refresh_from_db() self.assertEqual(eigenschap.eigenschapnaam, "aangepast") specificatie = EigenschapSpecificatie.objects.get() self.assertEqual(specificatie, eigenschap.specificatie_van_eigenschap) self.assertEqual(specificatie.groep, "test") self.assertEqual(specificatie.formaat, "tekst") self.assertEqual(specificatie.lengte, "5") self.assertEqual(specificatie.kardinaliteit, "1") self.assertEqual(specificatie.waardenverzameling, [])
def test_partial_update_eigenschap_specificatie(self): zaaktype = ZaakTypeFactory.create() zaaktype_url = reverse(zaaktype) specificatie = EigenschapSpecificatieFactory.create() eigenschap = EigenschapFactory.create() eigenschap_url = reverse(eigenschap) data = { "naam": "aangepast", "specificatie": { "groep": "test", }, } response = self.client.patch(eigenschap_url, data) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["naam"], "aangepast") eigenschap.refresh_from_db() self.assertEqual(eigenschap.eigenschapnaam, "aangepast") specificatie = eigenschap.specificatie_van_eigenschap self.assertEqual(specificatie.groep, "test")
def test_list_eigenschappen(self): zaaktype = ZaakTypeFactory.create() eigenschap1 = EigenschapFactory.create( eigenschapnaam='objecttype', is_van=zaaktype, specificatie_van_eigenschap=EigenschapSpecificatieFactory.create( formaat=FormaatChoices.tekst, lengte=255, kardinaliteit='1', waardenverzameling=['boot', 'zwerfvuil'])) EigenschapFactory.create( eigenschapnaam='boot.naam', is_van=zaaktype, specificatie_van_eigenschap=EigenschapSpecificatieFactory.create( groep='boot', formaat=FormaatChoices.tekst, lengte=255, kardinaliteit='1', )) EigenschapFactory.create( eigenschapnaam='boot.rederij', is_van=zaaktype, specificatie_van_eigenschap=EigenschapSpecificatieFactory.create( groep='boot', formaat=FormaatChoices.tekst, lengte=255, kardinaliteit='1', )) url = get_operation_url('eigenschap_list', catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.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) self.assertResponseTypes( response_data[0], { ('url', str), ('naam', str), ('definitie', str), ('specificatie', dict), ('toelichting', str), ('ingangsdatumObject', str), ('einddatumObject', type(None)), ('zaaktype', str), }) eigenschap_objecttype = next( (eig for eig in response_data if eig['naam'] == 'objecttype')) zaaktype_url = get_operation_url( 'zaaktype_read', catalogus_uuid=zaaktype.catalogus.uuid, uuid=zaaktype.uuid, ) detail_url = get_operation_url( 'eigenschap_read', catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.uuid, uuid=eigenschap1.uuid, ) self.assertEqual( eigenschap_objecttype, { 'url': f'http://testserver{detail_url}', 'naam': 'objecttype', 'definitie': '', 'einddatumObject': None, 'ingangsdatumObject': zaaktype.datum_begin_geldigheid.strftime("%Y-%m-%d"), 'zaaktype': f'http://testserver{zaaktype_url}', 'toelichting': '', 'specificatie': { 'formaat': FormaatChoices.tekst, 'groep': '', 'kardinaliteit': '1', 'lengte': '255', 'waardenverzameling': [ 'boot', 'zwerfvuil', ] } })
def test_conditional_get_304(self): eigenschap = EigenschapFactory.create(with_etag=True) response = self.client.get(reverse(eigenschap), HTTP_IF_NONE_MATCH=f'"{eigenschap._etag}"') self.assertEqual(response.status_code, status.HTTP_304_NOT_MODIFIED)
def test_eigenschap_head_cache_header(self): eigenschap = EigenschapFactory.create() self.assertHeadHasETag(reverse(eigenschap))
def test_eigenschap_get_cache_header(self): eigenschap = EigenschapFactory.create() response = self.client.get(reverse(eigenschap)) self.assertHasETag(response)
def test_list_eigenschappen(self): zaaktype = ZaakTypeFactory.create(concept=False) eigenschap1 = EigenschapFactory.create( eigenschapnaam="objecttype", zaaktype=zaaktype, specificatie_van_eigenschap=EigenschapSpecificatieFactory.create( formaat=FormaatChoices.tekst, lengte=255, kardinaliteit="1", waardenverzameling=["boot", "zwerfvuil"], ), ) EigenschapFactory.create( eigenschapnaam="boot.naam", zaaktype=zaaktype, specificatie_van_eigenschap=EigenschapSpecificatieFactory.create( groep="boot", formaat=FormaatChoices.tekst, lengte=255, kardinaliteit="1", ), ) EigenschapFactory.create( eigenschapnaam="boot.rederij", zaaktype=zaaktype, specificatie_van_eigenschap=EigenschapSpecificatieFactory.create( groep="boot", formaat=FormaatChoices.tekst, lengte=255, kardinaliteit="1", ), ) url = get_operation_url( "eigenschap_list", catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.uuid, ) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json()["results"] self.assertEqual(len(response_data), 3) self.assertResponseTypes( response_data[0], { ("url", str), ("naam", str), ("definitie", str), ("specificatie", dict), ("toelichting", str), ("zaaktype", str), }, ) eigenschap_objecttype = next( (eig for eig in response_data if eig["naam"] == "objecttype")) zaaktype_url = get_operation_url( "zaaktype_read", catalogus_uuid=zaaktype.catalogus.uuid, uuid=zaaktype.uuid) detail_url = get_operation_url( "eigenschap_read", catalogus_uuid=zaaktype.catalogus.uuid, zaaktype_uuid=zaaktype.uuid, uuid=eigenschap1.uuid, ) self.assertEqual( eigenschap_objecttype, { "url": f"http://testserver{detail_url}", "naam": "objecttype", "definitie": "", "zaaktype": f"http://testserver{zaaktype_url}", "toelichting": "", "specificatie": { "formaat": FormaatChoices.tekst, "groep": "", "kardinaliteit": "1", "lengte": "255", "waardenverzameling": ["boot", "zwerfvuil"], }, }, )