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_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_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)
    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)}")