def test_list_verzoeken(self): list_url = reverse(Verzoek) VerzoekFactory.create_batch(2) response = self.client.get(list_url) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json() self.assertEqual(len(data["results"]), 2)
def test_pagination_page_param(self): VerzoekFactory.create_batch(2) url = reverse(Verzoek) response = self.client.get(url, {"page": 1}) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 2) self.assertIsNone(response_data["previous"]) self.assertIsNone(response_data["next"])
def test_filter_status(self): VerzoekFactory.create(status=VerzoekStatus.afgehandeld) VerzoekFactory.create(status=VerzoekStatus.afgewezen) url = reverse(Verzoek) response = self.client.get(url, {"status": VerzoekStatus.afgewezen}) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 1) result = response_data["results"][0] self.assertEqual(result["status"], VerzoekStatus.afgewezen)
def test_filter_tekst(self): VerzoekFactory.create(tekst="sometext1") VerzoekFactory.create(tekst="sometext2") url = reverse(Verzoek) response = self.client.get(url, {"tekst": "sometext2"}) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 1) result = response_data["results"][0] self.assertEqual(result["tekst"], "sometext2")
def test_filter_voorkeurskanaal(self): VerzoekFactory.create(voorkeurskanaal="kanaal1") VerzoekFactory.create(voorkeurskanaal="kanaal2") url = reverse(Verzoek) response = self.client.get(url, {"voorkeurskanaal": "kanaal2"}) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 1) result = response_data["results"][0] self.assertEqual(result["voorkeurskanaal"], "kanaal2")
def test_filter_externe_identificatie(self): VerzoekFactory.create(externe_identificatie="000000000") VerzoekFactory.create(externe_identificatie="123456782") url = reverse(Verzoek) response = self.client.get(url, {"externe_identificatie": "000000000"}) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 1) result = response_data["results"][0] self.assertEqual(result["externeIdentificatie"], "000000000")
def test_read_verzoek(self): in_te_trekken_verzoek, aangevulde_verzoek = VerzoekFactory.create_batch( 2) verzoek = VerzoekFactory.create( registratiedatum=make_aware(datetime(2019, 1, 1)), in_te_trekken_verzoek=in_te_trekken_verzoek, aangevulde_verzoek=aangevulde_verzoek, ) intrekkende_verzoek = VerzoekFactory.create( in_te_trekken_verzoek=verzoek) aanvullende_verzoek = VerzoekFactory.create(aangevulde_verzoek=verzoek) detail_url = reverse(verzoek) response = self.client.get(detail_url) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json() self.assertEqual( data, { "url": f"http://testserver{detail_url}", "bronorganisatie": verzoek.bronorganisatie, "externeIdentificatie": verzoek.externe_identificatie, "identificatie": "VERZOEK-2019-0000000001", "registratiedatum": "2019-01-01T00:00:00Z", "status": verzoek.status, "tekst": verzoek.tekst, "voorkeurskanaal": verzoek.voorkeurskanaal, "inTeTrekkenVerzoek": f"http://testserver{reverse(in_te_trekken_verzoek)}", "intrekkendeVerzoek": f"http://testserver{reverse(intrekkende_verzoek)}", "aangevuldeVerzoek": f"http://testserver{reverse(aangevulde_verzoek)}", "aanvullendeVerzoek": f"http://testserver{reverse(aanvullende_verzoek)}", }, )
def test_filter_registratiedatum__lte(self): VerzoekFactory.create( registratiedatum=make_aware(datetime(2019, 1, 1))) VerzoekFactory.create( registratiedatum=make_aware(datetime(2020, 1, 1))) url = reverse(Verzoek) response = self.client.get( url, {"registratiedatum__lte": "2019-01-01T00:00:00Z"}) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 1) result = response_data["results"][0] self.assertEqual(result["registratiedatum"], "2019-01-01T00:00:00Z")
def test_create_objectverzoek(self, *mocks): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(ObjectVerzoek) data = { "verzoek": verzoek_url, "objectType": ObjectTypes.zaak, "object": ZAAK, } responses = { "http://example.com/api/v1/zaakverzoeken": [{ "url": f"https://example.com/api/v1/zaakverzoeken/{uuid.uuid4()}", "verzoek": f"http://testserver/api/v1/verzoeken/{uuid.uuid4()}", "zaak": ZAAK, }] } with mock_client(responses): response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) objectverzoek = ObjectVerzoek.objects.get() self.assertEqual(objectverzoek.verzoek, verzoek) self.assertEqual(objectverzoek.object_type, ObjectTypes.zaak) self.assertEqual(objectverzoek.object, ZAAK)
def test_destroy_verzoek(self): verzoek = VerzoekFactory.create() detail_url = reverse(verzoek) response = self.client.delete(detail_url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Verzoek.objects.count(), 0)
def test_cannot_read_without_correct_scope(self): verzoek = VerzoekFactory.create() urls = [ reverse("verzoek-list"), reverse(verzoek), ] for url in urls: with self.subTest(url=url): self.assertForbidden(url, method="get")
def test_update_verzoek(self): verzoek = VerzoekFactory.create() detail_url = reverse(verzoek) response = self.client.patch(detail_url, {"tekst": "new"}) self.assertEqual(response.status_code, status.HTTP_200_OK) verzoek.refresh_from_db() self.assertEqual(verzoek.tekst, "new")
def test_create_verzoekproduct_without_product(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(VerzoekProduct) data = {"verzoek": verzoek_url} response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) validation_error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(validation_error["code"], "invalid-product")
def test_filter_aanvullende_verzoek(self): verzoek1, verzoek2 = VerzoekFactory.create_batch(2) VerzoekFactory.create(aangevulde_verzoek=verzoek1) verzoek3 = VerzoekFactory.create(aangevulde_verzoek=verzoek2) url = reverse(Verzoek) response = self.client.get( url, { "aanvullende_verzoek": f"http://testserver.com{reverse(verzoek3)}" }, HTTP_HOST="testserver.com", ) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = response.json() self.assertEqual(response_data["count"], 1) result = response_data["results"][0] self.assertEqual(result["url"], f"http://testserver.com{reverse(verzoek2)}") self.assertEqual(result["aanvullendeVerzoek"], f"http://testserver.com{reverse(verzoek3)}")
def test_create_verzoekproduct_with_product_url(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(VerzoekProduct) data = {"verzoek": verzoek_url, "product": "https://example.com/"} response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) verzoekproduct = VerzoekProduct.objects.get() self.assertEqual(verzoekproduct.verzoek, verzoek) self.assertEqual(verzoekproduct.product, data["product"])
def test_create_klantverzoek(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(KlantVerzoek) data = {"verzoek": verzoek_url, "klant": KLANT} response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.content) klantverzoek = KlantVerzoek.objects.get() self.assertEqual(klantverzoek.verzoek, verzoek) self.assertEqual(klantverzoek.klant, KLANT)
def test_create_verzoekcontactmoment(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(VerzoekContactMoment) data = {"verzoek": verzoek_url, "contactmoment": CONTACTMOMENT} response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.content) verzoekcontactmoment = VerzoekContactMoment.objects.get() self.assertEqual(verzoekcontactmoment.verzoek, verzoek) self.assertEqual(verzoekcontactmoment.contactmoment, CONTACTMOMENT)
def test_create_verzoekproduct_with_invalid_product_url(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(VerzoekProduct) data = {"verzoek": verzoek_url, "product": "https://example.com/404"} with requests_mock.Mocker() as m: m.get("https://example.com/404", status_code=404) response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(VerzoekProduct.objects.count(), 0) error = get_validation_errors(response, "product") self.assertEqual(error["code"], "bad-url")
def test_create_objectverzoek_fail_no_remote_relation(self, *mocks): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(ObjectVerzoek) data = { "verzoek": verzoek_url, "objectType": ObjectTypes.zaak, "object": ZAAK, } responses = {"http://example.com/api/v1/zaakverzoeken": []} with mock_client(responses): response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(error["code"], "inconsistent-relation")
def test_create_klantverzoek_with_invalid_klant_url(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(KlantVerzoek) data = {"verzoek": verzoek_url, "klant": KLANT} with requests_mock.Mocker() as m: m.get(KLANT, status_code=404) response = self.client.post(list_url, data) self.assertEqual( response.status_code, status.HTTP_400_BAD_REQUEST, response.content ) self.assertEqual(KlantVerzoek.objects.count(), 0) error = get_validation_errors(response, "klant") self.assertEqual(error["code"], "bad-url")
def test_create_verzoekproduct_with_product_id(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) list_url = reverse(VerzoekProduct) data = { "verzoek": verzoek_url, "productIdentificatie": { "code": "test" } } response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.content) verzoekproduct = VerzoekProduct.objects.get() self.assertEqual(verzoekproduct.verzoek, verzoek) self.assertEqual(verzoekproduct.product_code, data["productIdentificatie"]["code"])
def test_read_objectverzoek(self): verzoek = VerzoekFactory.create() verzoek_url = reverse(verzoek) objectverzoek = ObjectVerzoekFactory.create(verzoek=verzoek) detail_url = reverse(objectverzoek) response = self.client.get(detail_url) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json() self.assertEqual( data, { "url": f"http://testserver{detail_url}", "verzoek": f"http://testserver{verzoek_url}", "objectType": objectverzoek.object_type, "object": objectverzoek.object, }, )
def test_create_verzoek(self): in_te_trekken_verzoek, aangevulde_verzoek = VerzoekFactory.create_batch( 2) list_url = reverse(Verzoek) data = { "bronorganisatie": "423182687", "status": VerzoekStatus.ontvangen, "tekst": "some text", "inTeTrekkenVerzoek": reverse(in_te_trekken_verzoek), "aangevuldeVerzoek": reverse(aangevulde_verzoek), } response = self.client.post(list_url, data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) verzoek = Verzoek.objects.get(bronorganisatie="423182687") self.assertEqual(verzoek.tekst, "some text") self.assertGreater(len(verzoek.identificatie), 0) self.assertEqual(verzoek.in_te_trekken_verzoek, in_te_trekken_verzoek) self.assertEqual(verzoek.aangevulde_verzoek, aangevulde_verzoek)