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