Beispiel #1
0
    def test_list_klanten(self):
        list_url = reverse(Klant)
        KlantFactory.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), 2)
Beispiel #2
0
    def test_create_contactmoment_with_medewerker(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        list_url = reverse(ContactMoment)
        data = {
            "bronorganisatie": "423182687",
            "klant": klant_url,
            "kanaal": "telephone",
            "tekst": "some text",
            "onderwerpLinks": [],
            "initiatiefnemer": InitiatiefNemer.gemeente,
            "medewerkerIdentificatie": {
                "identificatie": "12345",
                "achternaam": "Buurman",
                "voorletters": "B B",
            },
        }

        response = self.client.post(list_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        contactmoment = ContactMoment.objects.get()

        self.assertEqual(contactmoment.klant, klant)
        self.assertEqual(contactmoment.kanaal, "telephone")
        self.assertEqual(contactmoment.tekst, "some text")
        self.assertEqual(contactmoment.initiatiefnemer,
                         InitiatiefNemer.gemeente)

        medewerker = contactmoment.medewerker_identificatie

        self.assertEqual(medewerker.identificatie, "12345")
        self.assertEqual(medewerker.achternaam, "Buurman")
        self.assertEqual(medewerker.voorletters, "B B")
Beispiel #3
0
    def test_create_contactmoment(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        list_url = reverse(ContactMoment)
        data = {
            "bronorganisatie": "423182687",
            "klant": klant_url,
            "kanaal": "telephone",
            "tekst": "some text",
            "onderwerpLinks": [],
            "initiatiefnemer": InitiatiefNemer.gemeente,
            "medewerker": "http://example.com/medewerker/1",
        }

        response = self.client.post(list_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        contactmoment = ContactMoment.objects.get()

        self.assertEqual(contactmoment.klant, klant)
        self.assertEqual(contactmoment.kanaal, "telephone")
        self.assertEqual(contactmoment.tekst, "some text")
        self.assertEqual(contactmoment.initiatiefnemer,
                         InitiatiefNemer.gemeente)
        self.assertEqual(contactmoment.medewerker,
                         "http://example.com/medewerker/1")
Beispiel #4
0
    def test_read_klant_url(self):
        klant = KlantFactory.create(
            subject=SUBJECT, subject_type=KlantType.natuurlijk_persoon
        )
        detail_url = reverse(klant)

        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}",
                "voornaam": klant.voornaam,
                "achternaam": klant.achternaam,
                "adres": klant.adres,
                "emailadres": klant.emailadres,
                "functie": klant.functie,
                "telefoonnummer": klant.telefoonnummer,
                "subject": SUBJECT,
                "subjectType": KlantType.natuurlijk_persoon,
                "subjectIdentificatie": None,
            },
        )
Beispiel #5
0
    def test_read_contactmoment(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        contactmoment = ContactMomentFactory.create(
            klant=klant,
            interactiedatum=make_aware(datetime(2019, 1, 1)),
            initiatiefnemer=InitiatiefNemer.gemeente,
        )
        detail_url = reverse(contactmoment)

        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": contactmoment.bronorganisatie,
                "klant": f"http://testserver{klant_url}",
                "interactiedatum": "2019-01-01T00:00:00Z",
                "kanaal": contactmoment.kanaal,
                "voorkeurskanaal": contactmoment.voorkeurskanaal,
                "tekst": contactmoment.tekst,
                "onderwerpLinks": [],
                "initiatiefnemer": InitiatiefNemer.gemeente,
                "medewerker": contactmoment.medewerker,
                "medewerkerIdentificatie": None,
            },
        )
Beispiel #6
0
    def test_read_verzoek(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        verzoek = VerzoekFactory.create(
            klant=klant,
            interactiedatum=make_aware(datetime(2019, 1, 1)),
        )
        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",
                "klant": f"http://testserver{klant_url}",
                "interactiedatum": "2019-01-01T00:00:00Z",
                "status": verzoek.status,
                "tekst": verzoek.tekst,
                "voorkeurskanaal": verzoek.voorkeurskanaal,
            },
        )
Beispiel #7
0
    def test_read_klant_natuurlijkpersoon(self):
        klant = KlantFactory.create(
            subject=SUBJECT, subject_type=KlantType.natuurlijk_persoon
        )
        natuurlijkpersoon = NatuurlijkPersoonFactory.create(klant=klant)
        adres = AdresFactory.create(natuurlijkpersoon=natuurlijkpersoon)
        buitenland = SubVerblijfBuitenlandFactory.create(
            natuurlijkpersoon=natuurlijkpersoon
        )
        detail_url = reverse(klant)

        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}",
                "voornaam": klant.voornaam,
                "achternaam": klant.achternaam,
                "adres": klant.adres,
                "telefoonnummer": klant.telefoonnummer,
                "emailadres": klant.emailadres,
                "functie": klant.functie,
                "subject": SUBJECT,
                "subjectType": KlantType.natuurlijk_persoon,
                "subjectIdentificatie": {
                    "inpBsn": natuurlijkpersoon.inp_bsn,
                    "anpIdentificatie": natuurlijkpersoon.anp_identificatie,
                    "inpANummer": natuurlijkpersoon.inp_a_nummer,
                    "geslachtsnaam": natuurlijkpersoon.geslachtsnaam,
                    "voorvoegselGeslachtsnaam": natuurlijkpersoon.voorvoegsel_geslachtsnaam,
                    "voorletters": natuurlijkpersoon.voorletters,
                    "voornamen": natuurlijkpersoon.voornamen,
                    "geslachtsaanduiding": natuurlijkpersoon.geslachtsaanduiding,
                    "geboortedatum": natuurlijkpersoon.geboortedatum,
                    "verblijfsadres": {
                        "aoaIdentificatie": adres.aoa_identificatie,
                        "wplWoonplaatsNaam": adres.wpl_woonplaats_naam,
                        "gorOpenbareRuimteNaam": adres.gor_openbare_ruimte_naam,
                        "aoaPostcode": adres.aoa_postcode,
                        "aoaHuisnummer": adres.aoa_huisnummer,
                        "aoaHuisletter": adres.aoa_huisletter,
                        "aoaHuisnummertoevoeging": adres.aoa_huisnummertoevoeging,
                        "inpLocatiebeschrijving": adres.inp_locatiebeschrijving,
                    },
                    "subVerblijfBuitenland": {
                        "lndLandcode": buitenland.lnd_landcode,
                        "lndLandnaam": buitenland.lnd_landnaam,
                        "subAdresBuitenland1": buitenland.sub_adres_buitenland_1,
                        "subAdresBuitenland2": buitenland.sub_adres_buitenland_2,
                        "subAdresBuitenland3": buitenland.sub_adres_buitenland_3,
                    },
                },
            },
        )
Beispiel #8
0
    def test_destroy_klant(self):
        klant = KlantFactory.create()
        detail_url = reverse(klant)

        response = self.client.delete(detail_url)

        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertEqual(Klant.objects.count(), 0)
Beispiel #9
0
    def test_partial_update_klant_url(self):
        klant = KlantFactory.create(subject=SUBJECT, voornaam="old name")
        detail_url = reverse(klant)

        response = self.client.patch(detail_url, {"voornaam": "new name"})

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        klant.refresh_from_db()

        self.assertEqual(klant.voornaam, "new name")
Beispiel #10
0
    def test_partial_update_klant_subject_type_fail(self):
        klant = KlantFactory.create(
            subject=SUBJECT, subject_type=KlantType.natuurlijk_persoon
        )
        detail_url = reverse(klant)

        response = self.client.patch(detail_url, {"subjectType": KlantType.vestiging})

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

        validation_error = get_validation_errors(response, "subjectType")
        self.assertEqual(validation_error["code"], "wijzigen-niet-toegelaten")
Beispiel #11
0
    def test_update_verzoek(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        verzoek = VerzoekFactory.create()
        detail_url = reverse(verzoek)

        response = self.client.patch(detail_url, {"klant": klant_url})

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        verzoek.refresh_from_db()

        self.assertEqual(verzoek.klant, klant)
    def test_cannot_read_without_correct_scope(self):
        klant = KlantFactory.create()
        contactmoment = ContactMomentFactory.create()
        urls = [
            reverse("klant-list"),
            reverse(klant),
            reverse("contactmoment-list"),
            reverse(contactmoment),
        ]

        for url in urls:
            with self.subTest(url=url):
                self.assertForbidden(url, method="get")
Beispiel #13
0
    def test_update_contactmoment(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        contactmoment = ContactMomentFactory.create()
        detail_url = reverse(contactmoment)

        response = self.client.patch(detail_url, {"klant": klant_url})

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        contactmoment.refresh_from_db()

        self.assertEqual(contactmoment.klant, klant)
Beispiel #14
0
    def test_update_klant_vestiging(self):
        klant = KlantFactory.create(subject_type=KlantType.vestiging)
        detail_url = reverse(klant)
        data = self.client.get(detail_url).json()
        del data["url"]
        data.update(
            {
                "subject": "",
                "subjectIdentificatie": {
                    "vestigingsNummer": "123",
                    "handelsnaam": ["WB"],
                    "verblijfsadres": {
                        "aoaIdentificatie": "1234",
                        "wplWoonplaatsNaam": "East Meaganchester",
                        "gorOpenbareRuimteNaam": "New Amsterdam",
                        "aoaHuisnummer": 21,
                    },
                    "subVerblijfBuitenland": {
                        "lndLandcode": "ABCD",
                        "lndLandnaam": "Hollywood",
                    },
                },
            }
        )

        response = self.client.put(detail_url, data)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        klant.refresh_from_db()

        self.assertEqual(klant.subject, "")

        vestiging = klant.vestiging

        self.assertEqual(vestiging.vestigings_nummer, "123")
        self.assertEqual(vestiging.handelsnaam, ["WB"])

        adres = vestiging.verblijfsadres

        self.assertEqual(adres.aoa_identificatie, "1234")
        self.assertEqual(adres.wpl_woonplaats_naam, "East Meaganchester")
        self.assertEqual(adres.gor_openbare_ruimte_naam, "New Amsterdam")
        self.assertEqual(adres.aoa_huisnummer, 21)

        buitenland = vestiging.sub_verblijf_buitenland

        self.assertEqual(buitenland.lnd_landcode, "ABCD")
        self.assertEqual(buitenland.lnd_landnaam, "Hollywood")
Beispiel #15
0
    def test_update_klant_url(self):
        klant = KlantFactory.create(subject=SUBJECT, voornaam="old name")
        detail_url = reverse(klant)
        data = self.client.get(detail_url).json()
        del data["url"]
        del data["subjectIdentificatie"]
        data["voornaam"] = "new name"

        response = self.client.put(detail_url, data)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        klant.refresh_from_db()

        self.assertEqual(klant.voornaam, "new name")
Beispiel #16
0
    def test_read_klant_vestiging(self):
        klant = KlantFactory.create(subject=SUBJECT, subject_type=KlantType.vestiging)
        vestiging = VestigingFactory.create(klant=klant)
        adres = AdresFactory.create(vestiging=vestiging)
        buitenland = SubVerblijfBuitenlandFactory.create(vestiging=vestiging)
        detail_url = reverse(klant)

        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}",
                "voornaam": klant.voornaam,
                "achternaam": klant.achternaam,
                "adres": klant.adres,
                "telefoonnummer": klant.telefoonnummer,
                "emailadres": klant.emailadres,
                "functie": klant.functie,
                "subject": SUBJECT,
                "subjectType": KlantType.vestiging,
                "subjectIdentificatie": {
                    "vestigingsNummer": vestiging.vestigings_nummer,
                    "handelsnaam": vestiging.handelsnaam,
                    "verblijfsadres": {
                        "aoaIdentificatie": adres.aoa_identificatie,
                        "wplWoonplaatsNaam": adres.wpl_woonplaats_naam,
                        "gorOpenbareRuimteNaam": adres.gor_openbare_ruimte_naam,
                        "aoaPostcode": adres.aoa_postcode,
                        "aoaHuisnummer": adres.aoa_huisnummer,
                        "aoaHuisletter": adres.aoa_huisletter,
                        "aoaHuisnummertoevoeging": adres.aoa_huisnummertoevoeging,
                        "inpLocatiebeschrijving": adres.inp_locatiebeschrijving,
                    },
                    "subVerblijfBuitenland": {
                        "lndLandcode": buitenland.lnd_landcode,
                        "lndLandnaam": buitenland.lnd_landnaam,
                        "subAdresBuitenland1": buitenland.sub_adres_buitenland_1,
                        "subAdresBuitenland2": buitenland.sub_adres_buitenland_2,
                        "subAdresBuitenland3": buitenland.sub_adres_buitenland_3,
                    },
                },
            },
        )
Beispiel #17
0
    def test_update_klant_naturlijkpersoon(self):
        klant = KlantFactory.create(
            subject_type=KlantType.natuurlijk_persoon, subject=SUBJECT
        )
        natuurlijkpersoon = NatuurlijkPersoonFactory.create(klant=klant)
        adres = AdresFactory.create(natuurlijkpersoon=natuurlijkpersoon)
        buitenland = SubVerblijfBuitenlandFactory.create(
            natuurlijkpersoon=natuurlijkpersoon
        )
        detail_url = reverse(klant)
        data = self.client.get(detail_url).json()
        del data["url"]
        data.update(
            {
                "voornaam": "New name",
                "subject": "",
                "subjectIdentificatie": {
                    "geslachtsnaam": "New name2",
                    "verblijfsadres": {
                        "aoaIdentificatie": "1234",
                        "wplWoonplaatsNaam": "New place",
                        "gorOpenbareRuimteNaam": "New place2",
                        "aoaHuisnummer": 1,
                    },
                    "subVerblijfBuitenland": {
                        "lndLandcode": "XXXX",
                        "lndLandnaam": "New land",
                    },
                },
            }
        )

        response = self.client.put(detail_url, data)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        klant.refresh_from_db()
        self.assertEqual(klant.voornaam, "New name")
        self.assertEqual(klant.subject, "")

        natuurlijkpersoon.refresh_from_db()
        self.assertEqual(natuurlijkpersoon.geslachtsnaam, "New name2")

        adres.refresh_from_db()
        self.assertEqual(adres.wpl_woonplaats_naam, "New place")

        buitenland.refresh_from_db()
        self.assertEqual(buitenland.lnd_landnaam, "New land")
Beispiel #18
0
    def test_read_klant_nietnatuurlijkpersoon(self):
        klant = KlantFactory.create(
            subject=SUBJECT, subject_type=KlantType.niet_natuurlijk_persoon
        )
        nietnatuurlijkpersoon = NietNatuurlijkPersoonFactory.create(klant=klant)
        buitenland = SubVerblijfBuitenlandFactory.create(
            nietnatuurlijkpersoon=nietnatuurlijkpersoon
        )
        detail_url = reverse(klant)

        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}",
                "voornaam": klant.voornaam,
                "achternaam": klant.achternaam,
                "adres": klant.adres,
                "telefoonnummer": klant.telefoonnummer,
                "emailadres": klant.emailadres,
                "functie": klant.functie,
                "subject": SUBJECT,
                "subjectType": KlantType.niet_natuurlijk_persoon,
                "subjectIdentificatie": {
                    "innNnpId": nietnatuurlijkpersoon.inn_nnp_id,
                    "annIdentificatie": nietnatuurlijkpersoon.ann_identificatie,
                    "statutaireNaam": nietnatuurlijkpersoon.statutaire_naam,
                    "innRechtsvorm": nietnatuurlijkpersoon.inn_rechtsvorm,
                    "bezoekadres": nietnatuurlijkpersoon.bezoekadres,
                    "subVerblijfBuitenland": {
                        "lndLandcode": buitenland.lnd_landcode,
                        "lndLandnaam": buitenland.lnd_landnaam,
                        "subAdresBuitenland1": buitenland.sub_adres_buitenland_1,
                        "subAdresBuitenland2": buitenland.sub_adres_buitenland_2,
                        "subAdresBuitenland3": buitenland.sub_adres_buitenland_3,
                    },
                },
            },
        )
Beispiel #19
0
    def test_create_contactmoment_fail_no_medewerker(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        list_url = reverse(ContactMoment)
        data = {
            "bronorganisatie": "423182687",
            "klant": klant_url,
            "kanaal": "telephone",
            "tekst": "some text",
            "initiatiefnemer": InitiatiefNemer.gemeente,
        }

        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"], "invalid-medewerker")
Beispiel #20
0
    def test_create_verzoek(self):
        klant = KlantFactory.create()
        klant_url = reverse(klant)
        list_url = reverse(Verzoek)
        data = {
            "bronorganisatie": "423182687",
            "klant": klant_url,
            "status": VerzoekStatus.ontvangen,
            "tekst": "some text",
        }

        response = self.client.post(list_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        verzoek = Verzoek.objects.get()

        self.assertEqual(verzoek.klant, klant)
        self.assertEqual(verzoek.tekst, "some text")
        self.assertGreater(len(verzoek.identificatie), 0)
Beispiel #21
0
    def test_update_klant_nietnaturlijkpersoon(self):
        klant = KlantFactory.create(
            subject_type=KlantType.niet_natuurlijk_persoon, subject=SUBJECT
        )
        nietnatuurlijkpersoon = NietNatuurlijkPersoonFactory.create(klant=klant)
        buitenland = SubVerblijfBuitenlandFactory.create(
            nietnatuurlijkpersoon=nietnatuurlijkpersoon
        )
        detail_url = reverse(klant)
        data = self.client.get(detail_url).json()
        del data["url"]
        data.update(
            {
                "voornaam": "New name",
                "subject": "",
                "subjectIdentificatie": {
                    "statutaireNaam": "New name2",
                    "subVerblijfBuitenland": {
                        "lndLandcode": "XXXX",
                        "lndLandnaam": "New land",
                    },
                },
            }
        )

        response = self.client.put(detail_url, data)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        klant.refresh_from_db()
        self.assertEqual(klant.voornaam, "New name")
        self.assertEqual(klant.subject, "")

        nietnatuurlijkpersoon.refresh_from_db()
        self.assertEqual(nietnatuurlijkpersoon.statutaire_naam, "New name2")

        buitenland.refresh_from_db()
        self.assertEqual(buitenland.lnd_landnaam, "New land")