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_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_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_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)
示例#9
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)
示例#16
0
    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_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_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_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,
            },
        )