def test_resultaattype_detail_with_read_only_user(self, m):
        user = UserFactory.create(is_staff=True)
        view_resultaattype = Permission.objects.get(codename="view_resultaattype")
        user.user_permissions.add(view_resultaattype)
        self.app.set_user(user)

        selectielijst_api = "https://selectielijst.openzaak.nl/api/v1/"
        procestype_url = (
            f"{selectielijst_api}procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d"
        )
        resultaat_url = (
            f"{selectielijst_api}resultaten/cc5ae4e3-a9e6-4386-bcee-46be4986a829"
        )
        omschrijving_url = (
            "https://referentielijsten-api.vng.cloud/api/v1/"
            "resultaattypeomschrijvingen/e6a0c939-3404-45b0-88e3-76c94fb80ea7"
        )
        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        mock_resource_get(m, "procestypen", procestype_url)
        mock_resource_get(m, "resultaten", resultaat_url)
        mock_resource_get(m, "resultaattypeomschrijvingen", omschrijving_url)
        resultaattype = ResultaatTypeFactory.create(
            zaaktype__selectielijst_procestype=procestype_url,
            selectielijstklasse=resultaat_url,
            resultaattypeomschrijving=omschrijving_url,
        )
        url = reverse("admin:catalogi_resultaattype_change", args=(resultaattype.pk,))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)
Exemplo n.º 2
0
    def test_zaaktype_no_notify_on_no_change(self, m):
        procestype_url = ("https://selectielijst.openzaak.nl/api/v1/"
                          "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d")
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        mock_resource_get(m, "procestypen", procestype_url)
        mock_nrc_oas_get(m)
        m.post("https://notificaties-api.vng.cloud/api/v1/notificaties",
               status_code=201)

        zaaktype = ZaakTypeFactory.create(
            concept=True,
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
            selectielijst_procestype=procestype_url,
        )
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)
        form = response.forms["zaaktype_form"]

        with capture_on_commit_callbacks(execute=True):
            form.submit("_save")

        called_urls = [item.url for item in m.request_history]
        self.assertNotIn(
            "https://notificaties-api.vng.cloud/api/v1/notificaties",
            called_urls)
Exemplo n.º 3
0
    def test_zaaktype_notify_on_create(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        mock_nrc_oas_get(m)
        m.post("https://notificaties-api.vng.cloud/api/v1/notificaties",
               status_code=201)

        url = reverse("admin:catalogi_zaaktype_add")

        response = self.app.get(url)

        form = response.forms["zaaktype_form"]
        form["zaaktype_omschrijving"] = "test"
        form["doel"] = "test"
        form["aanleiding"] = "test"
        form["indicatie_intern_of_extern"].select("intern")
        form["handeling_initiator"] = "test"
        form["onderwerp"] = "test"
        form["handeling_behandelaar"] = "test"
        form["doorlooptijd_behandeling_days"] = 12
        form["opschorting_en_aanhouding_mogelijk"].select(False)
        form["verlenging_mogelijk"].select(False)
        form["vertrouwelijkheidaanduiding"].select("openbaar")
        form["producten_of_diensten"] = "https://example.com/foobarbaz"
        form["referentieproces_naam"] = "test"
        form["catalogus"] = self.catalogus.pk
        form["datum_begin_geldigheid"] = "21-11-2019"

        with capture_on_commit_callbacks(execute=True):
            form.submit("_save")

        called_urls = [item.url for item in m.request_history]
        self.assertIn("https://notificaties-api.vng.cloud/api/v1/notificaties",
                      called_urls)
Exemplo n.º 4
0
    def test_submit_zaaktype_required_fields(self, m):
        catalogus = CatalogusFactory.create()
        url = reverse("admin:catalogi_zaaktype_add")
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        add_page = self.app.get(url)
        form = add_page.form

        form["zaaktype_omschrijving"] = "test"
        form["doel"] = "test"
        form["aanleiding"] = "test"
        form["indicatie_intern_of_extern"].select("intern")
        form["handeling_initiator"] = "test"
        form["onderwerp"] = "test"
        form["handeling_behandelaar"] = "test"
        form["doorlooptijd_behandeling_days"] = 12
        form["opschorting_en_aanhouding_mogelijk"].select(False)
        form["verlenging_mogelijk"].select(False)
        form["vertrouwelijkheidaanduiding"].select("openbaar")
        form["producten_of_diensten"] = "https://example.com/foobarbaz"
        form["referentieproces_naam"] = "test"
        form["catalogus"] = catalogus.pk
        form["datum_begin_geldigheid"] = "21-11-2019"

        response = form.submit()

        # redirect on succesfull create, 200 on validation errors, 500 on db errors
        self.assertEqual(response.status_code, 302)
        self.assertEqual(ZaakType.objects.count(), 1)
    def test_selectielijst_selectielijstklasse(self, m):
        """
        Test that the selectielijst procestype field is a dropdown.
        """
        procestype_url = (
            "https://selectielijst.openzaak.nl/api/v1/"
            "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d"
        )
        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        mock_resource_get(m, "procestypen", procestype_url)
        zaaktype = ResultaatTypeFactory.create(
            zaaktype__selectielijst_procestype=procestype_url
        )
        url = reverse("admin:catalogi_resultaattype_change", args=(zaaktype.pk,))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        form = response.forms["resultaattype_form"]
        field = form.fields["selectielijstklasse"][0]
        self.assertEqual(field.tag, "input")
        # first element of JSON response
        self.assertEqual(
            field._value,
            "https://selectielijst.openzaak.nl/api/v1/resultaten/cc5ae4e3-a9e6-4386-bcee-46be4986a829",
        )
Exemplo n.º 6
0
    def test_zaaktype_detail(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        zaaktype = ZaakTypeFactory.create()
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)
    def test_readonly_resultaattype(self, m):
        """
        check that in case of published zaaktype, resultaattype page is readonly
        """
        selectielijst_api = "https://selectielijst.openzaak.nl/api/v1/"
        procestype_url = (
            f"{selectielijst_api}procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d"
        )
        resultaat_url = (
            f"{selectielijst_api}resultaten/cc5ae4e3-a9e6-4386-bcee-46be4986a829"
        )
        omschrijving_url = (
            "https://referentielijsten-api.vng.cloud/api/v1/"
            "resultaattypeomschrijvingen/e6a0c939-3404-45b0-88e3-76c94fb80ea7")

        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        mock_resource_get(m, "procestypen", procestype_url)
        mock_resource_get(m, "resultaten", resultaat_url)
        mock_resource_get(m, "resultaattypeomschrijvingen", omschrijving_url)
        resultaattype = ResultaatTypeFactory.create(
            zaaktype__concept=False,
            zaaktype__selectielijst_procestype=procestype_url,
            selectielijstklasse=resultaat_url,
            resultaattypeomschrijving=omschrijving_url,
            archiefactietermijn=relativedelta(years=5),
        )
        url = reverse("admin:catalogi_resultaattype_change",
                      args=(resultaattype.pk, ))

        response = self.app.get(url)

        form = response.form
        form_fields = list(form.fields.keys())
        resultaattype_fields = [
            f.name for f in resultaattype._meta.get_fields()
        ]

        for field in resultaattype_fields:
            self.assertEqual(field in form_fields, False)

        # check custom formatting
        selectielijstklasse = response.html.find(
            class_="field-selectielijstklasse").div.div
        self.assertEqual(selectielijstklasse.text,
                         "1.1 - Ingericht - vernietigen")
        omschrijving = response.html.find(
            class_="field-resultaattypeomschrijving").div.div
        self.assertEqual(omschrijving.text, "Afgewezen")
        archiefactietermijn = response.html.find(
            class_="field-archiefactietermijn").div.div
        self.assertEqual(archiefactietermijn.text, "5 years")
Exemplo n.º 8
0
    def test_zaaktype_detail(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        zaaktype = ZaakTypeFactory.create()
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        # Verify that the save button is visible
        save_button = response.html.find("input", {"name": "_save"})
        self.assertIsNotNone(save_button)
Exemplo n.º 9
0
    def test_publish_zaaktype(self, m):
        procestype_url = ("https://selectielijst.openzaak.nl/api/v1/"
                          "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d")
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        mock_resource_get(m, "procestypen", procestype_url)
        mock_nrc_oas_get(m)
        m.post("https://notificaties-api.vng.cloud/api/v1/notificaties",
               status_code=201)

        zaaktype = ZaakTypeFactory.create(
            concept=True,
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
            selectielijst_procestype=procestype_url,
        )
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        # Verify that the publish button is visible and enabled
        publish_button = response.html.find("input", {"name": "_publish"})
        self.assertIsNotNone(publish_button)
        publish_button = response.html.find("input", {
            "name": "_publish",
            "disabled": "disabled"
        })
        self.assertIsNone(publish_button)

        form = response.forms["zaaktype_form"]

        with capture_on_commit_callbacks(execute=True):
            response = form.submit("_publish").follow()

        zaaktype.refresh_from_db()
        self.assertFalse(zaaktype.concept)

        # Verify that the publish button is disabled
        publish_button = response.html.find("input", {
            "name": "_publish",
            "disabled": "disabled"
        })
        self.assertIsNotNone(publish_button)

        # Verify notification is sent
        called_urls = [item.url for item in m.request_history]
        self.assertIn("https://notificaties-api.vng.cloud/api/v1/notificaties",
                      called_urls)
Exemplo n.º 10
0
    def test_resultaattype_detail(self, m):
        procestype_url = ("https://selectielijst.openzaak.nl/api/v1/"
                          "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d")
        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        mock_resource_get(m, "procestypen", procestype_url)
        resultaattype = ResultaatTypeFactory.create(
            zaaktype__selectielijst_procestype=procestype_url)
        url = reverse("admin:catalogi_resultaattype_change",
                      args=(resultaattype.pk, ))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)
Exemplo n.º 11
0
    def setUp(self):
        super().setUp()

        mocker = requests_mock.Mocker()
        mocker.start()
        self.addCleanup(mocker.stop)

        mock_oas_get(mocker)

        mock_resource_list(mocker, "procestypen")
        mock_resource_get(
            mocker,
            "procestypen",
            ("https://selectielijst.openzaak.nl/api/v1/"
             "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d"),
        )
Exemplo n.º 12
0
    def test_publish_zaaktype_related_to_concept_informatieobjecttype_fails(
            self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")

        zaaktype = ZaakTypeFactory.create(
            concept=True,
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
        )
        ZaakTypeInformatieObjectTypeFactory.create(
            informatieobjecttype__concept=True, zaaktype=zaaktype)
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        # Verify that the publish button is visible and enabled
        publish_button = response.html.find("input", {"name": "_publish"})
        self.assertIsNotNone(publish_button)
        publish_button = response.html.find("input", {
            "name": "_publish",
            "disabled": "disabled"
        })
        self.assertIsNone(publish_button)

        form = response.forms["zaaktype_form"]

        response = form.submit("_publish").follow()

        zaaktype.refresh_from_db()
        self.assertTrue(zaaktype.concept)

        # Check that the error is shown on the page
        error_message = response.html.find("li", {"class": "error"})
        self.assertIn("should be published", error_message.text)

        # Verify that the publish button is still visible and enabled.
        publish_button = response.html.find("input", {"name": "_publish"})
        self.assertIsNotNone(publish_button)
        publish_button = response.html.find("input", {
            "name": "_publish",
            "disabled": "disabled"
        })
        self.assertIsNone(publish_button)
Exemplo n.º 13
0
    def test_zaaktype_producten_of_diensten_empty_save(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        zaaktype = ZaakTypeFactory.create(producten_of_diensten=[])
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        form = response.form

        response = form.submit("_save")

        self.assertEqual(response.status_code, 200)
        self.assertIsNone(
            response.html.select_one(
                ".field-producten_of_diensten .errorlist"))
Exemplo n.º 14
0
    def test_resultaattype_detail_no_procestype(self, m):
        procestype_url = ""
        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        resultaattype = ResultaatTypeFactory.create(
            zaaktype__selectielijst_procestype=procestype_url)
        url = reverse("admin:catalogi_resultaattype_change",
                      args=(resultaattype.pk, ))

        response = self.app.get(url)
        self.assertEqual(response.status_code, 200)

        self.assertIn(
            _("Please select a Procestype for the related ZaakType to get "
              "proper filtering of selectielijstklasses"),
            response.text,
        )
    def test_create_resultaattype_selectielijst_bewaartermijn_null(self, m):
        """
        Test if creating a resultaattype with selectielijstklasse.bewaartermijn
        = null is possible
        """
        procestype_url = (
            "https://selectielijst.openzaak.nl/api/v1/"
            "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d"
        )
        selectielijstklasse_url = (
            "https://selectielijst.openzaak.nl/api/v1/"
            "resultaten/8320ab7d-3a8d-4c8b-b94a-14b4fa374d0a"
        )
        omschrijving_url = (
            "https://referentielijsten-api.vng.cloud/api/v1/"
            "resultaattypeomschrijvingen/e6a0c939-3404-45b0-88e3-76c94fb80ea7"
        )

        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        mock_resource_get(m, "procestypen", procestype_url)
        mock_resource_get(m, "resultaten", selectielijstklasse_url)
        mock_resource_get(m, "resultaattypeomschrijvingen", omschrijving_url)

        zaaktype = ZaakTypeFactory.create(selectielijst_procestype=procestype_url)

        url = reverse("admin:catalogi_resultaattype_add")

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        form = response.forms["resultaattype_form"]
        form["zaaktype"] = zaaktype.pk
        form["omschrijving"] = "test"
        form["selectielijstklasse"] = selectielijstklasse_url
        form["resultaattypeomschrijving"] = omschrijving_url
        form["brondatum_archiefprocedure_afleidingswijze"] = "ingangsdatum_besluit"
        response = form.submit()

        self.assertEqual(response.status_code, 302)
        self.assertEqual(ResultaatType.objects.count(), 1)
        self.assertEqual(ResultaatType.objects.first().omschrijving, "test")
Exemplo n.º 16
0
    def test_resultaattype_detail(self, m):
        procestype_url = ("https://selectielijst.openzaak.nl/api/v1/"
                          "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d")
        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")
        mock_resource_list(m, "resultaten")
        mock_resource_get(m, "procestypen", procestype_url)
        resultaattype = ResultaatTypeFactory.create(
            zaaktype__selectielijst_procestype=procestype_url)
        url = reverse("admin:catalogi_resultaattype_change",
                      args=(resultaattype.pk, ))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        # Verify that the save button is visible
        save_button = response.html.find("input", {"name": "_save"})
        self.assertIsNotNone(save_button)
Exemplo n.º 17
0
    def test_publish_zaaktype(self, m):
        procestype_url = ("https://selectielijst.openzaak.nl/api/v1/"
                          "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d")
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        mock_resource_get(m, "procestypen", procestype_url)

        zaaktype = ZaakTypeFactory.create(
            concept=True,
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
            selectielijst_procestype=procestype_url,
        )
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        # Verify that the publish button is visible and enabled
        publish_button = response.html.find("input", {"name": "_publish"})
        self.assertIsNotNone(publish_button)
        publish_button = response.html.find("input", {
            "name": "_publish",
            "disabled": "disabled"
        })
        self.assertIsNone(publish_button)

        form = response.forms["zaaktype_form"]

        response = form.submit("_publish").follow()

        zaaktype.refresh_from_db()
        self.assertFalse(zaaktype.concept)

        # Verify that the publish button is disabled
        publish_button = response.html.find("input", {
            "name": "_publish",
            "disabled": "disabled"
        })
        self.assertIsNotNone(publish_button)
Exemplo n.º 18
0
    def test_selectielijst_procestype(self, m):
        """
        Test that the selectielijst procestype field is a dropdown.
        """
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        zaaktype = ZaakTypeFactory.create()
        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype.pk, ))

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        form = response.forms["zaaktype_form"]
        field = form.fields["selectielijst_procestype"][0]
        self.assertEqual(field.tag, "select")
        # first element of JSON response
        self.assertEqual(
            field.value,
            "https://selectielijst.openzaak.nl/api/v1/procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d",
        )
Exemplo n.º 19
0
    def test_create_new_version_fail_no_datum_einde_geldigheid(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")

        zaaktype_ = ZaakTypeFactory.create(
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
        )

        url = reverse("admin:catalogi_zaaktype_change", args=(zaaktype_.pk, ))

        get_response = self.app.get(url)
        form = get_response.form
        post_response = form.submit("_addversion")

        error_message = post_response.html.find(class_="errorlist")
        self.assertIn(
            "datum_einde_geldigheid is required if the new version is being created",
            error_message.text,
        )
Exemplo n.º 20
0
    def test_submit_zaaktype_validate_doorlooptijd_servicenorm(self, m):
        catalogus = CatalogusFactory.create()
        url = reverse("admin:catalogi_zaaktype_add")
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        add_page = self.app.get(url)
        form = add_page.form

        form["zaaktype_omschrijving"] = "test"
        form["doel"] = "test"
        form["aanleiding"] = "test"
        form["indicatie_intern_of_extern"].select("intern")
        form["handeling_initiator"] = "test"
        form["onderwerp"] = "test"
        form["handeling_behandelaar"] = "test"
        form["doorlooptijd_behandeling_days"] = 12
        form["servicenorm_behandeling_days"] = 15
        form["opschorting_en_aanhouding_mogelijk"].select(False)
        form["verlenging_mogelijk"].select(False)
        form["vertrouwelijkheidaanduiding"].select("openbaar")
        form["producten_of_diensten"] = "https://example.com/foobarbaz"
        form["referentieproces_naam"] = "test"
        form["catalogus"] = catalogus.pk
        form["datum_begin_geldigheid"] = "21-11-2019"

        response = form.submit()

        # redirect on succesfull create, 200 on validation errors, 500 on db errors
        self.assertEqual(response.status_code, 200)

        form = response.context["adminform"].form
        self.assertEqual(
            form.errors["__all__"],
            [
                "'Servicenorm behandeling' periode mag niet langer zijn dan "
                "de periode van 'Doorlooptijd behandeling'."
            ],
        )
Exemplo n.º 21
0
    def test_create_new_version(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")
        mock_nrc_oas_get(m)
        m.post("https://notificaties-api.vng.cloud/api/v1/notificaties",
               status_code=201)

        zaaktype_old = ZaakTypeFactory.create(
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
        )
        # reverse fk relations
        statustype_old = StatusTypeFactory.create(zaaktype=zaaktype_old)
        resultaattypeomschrijving = "https://example.com/resultaattypeomschrijving/1"
        m.register_uri("GET",
                       resultaattypeomschrijving,
                       json={"omschrijving": "init"})
        resultaattype_old = ResultaatTypeFactory.create(
            zaaktype=zaaktype_old,
            resultaattypeomschrijving=resultaattypeomschrijving)
        roltype_old = RolTypeFactory.create(zaaktype=zaaktype_old)
        eigenschap_old = EigenschapFactory.create(zaaktype=zaaktype_old)
        zaaktypenrelatie_old = ZaakTypenRelatieFactory.create(
            zaaktype=zaaktype_old)
        # m2m relations
        besluittype = BesluitTypeFactory.create(zaaktypen=[zaaktype_old])
        informatieobjecttype = ZaakTypeInformatieObjectTypeFactory.create(
            zaaktype=zaaktype_old).informatieobjecttype
        # not copied
        ZaakFactory.create(zaaktype=zaaktype_old)
        url = reverse("admin:catalogi_zaaktype_change",
                      args=(zaaktype_old.pk, ))

        get_response = self.app.get(url)

        form = get_response.form
        form["datum_einde_geldigheid"] = "2019-01-01"

        with capture_on_commit_callbacks(execute=True):
            post_response = form.submit("_addversion")

        zaaktype_old.refresh_from_db()

        self.assertEqual(zaaktype_old.datum_einde_geldigheid, date(2019, 1, 1))

        zaaktype_new = ZaakType.objects.exclude(pk=zaaktype_old.pk).get()

        # check that the new zaak has the same identificator
        self.assertEqual(zaaktype_new.identificatie,
                         zaaktype_old.identificatie)
        # check version dates
        self.assertEqual(zaaktype_new.datum_einde_geldigheid, None)
        self.assertEqual(zaaktype_new.datum_begin_geldigheid,
                         date(2019, 11, 1))
        self.assertEqual(zaaktype_new.versiedatum, date(2019, 11, 1))
        self.assertTrue(zaaktype_new.concept)
        # response redirect to correct page
        self.assertEqual(
            post_response.location,
            reverse("admin:catalogi_zaaktype_change",
                    args=(zaaktype_new.pk, )),
        )

        # assert the new relations are created
        self.assertNotEqual(zaaktype_new.statustypen.get().id,
                            statustype_old.id)
        self.assertNotEqual(zaaktype_new.resultaattypen.get().id,
                            resultaattype_old.id)
        self.assertNotEqual(zaaktype_new.roltype_set.get().id, roltype_old.id)
        self.assertNotEqual(zaaktype_new.eigenschap_set.get().id,
                            eigenschap_old.id)
        self.assertNotEqual(zaaktype_new.zaaktypenrelaties.get().id,
                            zaaktypenrelatie_old.id)
        # assert m2m relations are saved
        self.assertEqual(zaaktype_new.besluittypen.get().id, besluittype.id)
        self.assertEqual(zaaktype_new.informatieobjecttypen.get().id,
                         informatieobjecttype.id)
        # assert new zaken are not created
        self.assertEqual(zaaktype_new.zaak_set.count(), 0)

        # Verify notification is sent
        called_urls = [item.url for item in m.request_history]
        self.assertIn("https://notificaties-api.vng.cloud/api/v1/notificaties",
                      called_urls)
Exemplo n.º 22
0
    def test_create_new_version(self, m):
        mock_oas_get(m)
        mock_resource_list(m, "procestypen")

        zaaktype_old = ZaakTypeFactory.create(
            zaaktype_omschrijving="test",
            vertrouwelijkheidaanduiding="openbaar",
            trefwoorden=["test"],
            verantwoordingsrelatie=["bla"],
        )
        # reverse fk relations
        statustype_old = StatusTypeFactory.create(zaaktype=zaaktype_old)
        resultaattype_old = ResultaatTypeFactory.create(zaaktype=zaaktype_old)
        roltype_old = RolTypeFactory.create(zaaktype=zaaktype_old)
        eigenschap_old = EigenschapFactory.create(zaaktype=zaaktype_old)
        zaaktypenrelatie_old = ZaakTypenRelatieFactory.create(
            zaaktype=zaaktype_old)
        # m2m relations
        besluittype = BesluitTypeFactory.create(zaaktypen=[zaaktype_old])
        informatieobjecttype = ZaakTypeInformatieObjectTypeFactory.create(
            zaaktype=zaaktype_old).informatieobjecttype
        # not copied
        ZaakFactory.create(zaaktype=zaaktype_old)
        url = reverse("admin:catalogi_zaaktype_change",
                      args=(zaaktype_old.pk, ))

        get_response = self.app.get(url)

        form = get_response.form
        form["datum_einde_geldigheid"] = "2019-01-01"

        post_response = form.submit("_addversion")

        zaaktype_old.refresh_from_db()

        self.assertEqual(zaaktype_old.datum_einde_geldigheid, date(2019, 1, 1))

        zaaktype_new = ZaakType.objects.exclude(pk=zaaktype_old.pk).get()

        # check that the new zaak has the same identificator
        self.assertEqual(zaaktype_new.identificatie,
                         zaaktype_old.identificatie)
        # check version dates
        self.assertEqual(zaaktype_new.datum_einde_geldigheid, None)
        self.assertEqual(zaaktype_new.datum_begin_geldigheid,
                         date(2019, 11, 1))
        self.assertEqual(zaaktype_new.versiedatum, date(2019, 11, 1))
        self.assertTrue(zaaktype_new.concept)
        # response redirect to correct page
        self.assertEqual(
            post_response.location,
            reverse("admin:catalogi_zaaktype_change",
                    args=(zaaktype_new.pk, )),
        )

        # assert the new relations are created
        self.assertNotEqual(zaaktype_new.statustypen.get().id,
                            statustype_old.id)
        self.assertNotEqual(zaaktype_new.resultaattypen.get().id,
                            resultaattype_old.id)
        self.assertNotEqual(zaaktype_new.roltype_set.get().id, roltype_old.id)
        self.assertNotEqual(zaaktype_new.eigenschap_set.get().id,
                            eigenschap_old.id)
        self.assertNotEqual(zaaktype_new.zaaktypenrelaties.get().id,
                            zaaktypenrelatie_old.id)
        # assert m2m relations are saved
        self.assertEqual(zaaktype_new.besluittypen.get().id, besluittype.id)
        self.assertEqual(zaaktype_new.informatieobjecttypen.get().id,
                         informatieobjecttype.id)
        # assert new zaken are not created
        self.assertEqual(zaaktype_new.zaak_set.count(), 0)
    def test_create_resultaattype_selectielijst_filtered_by_procestype(self, m):
        """
        Test that the selectielijst procestype field is a dropdown.
        """
        procestype_url = (
            "https://selectielijst.openzaak.nl/api/v1/"
            "procestypen/e1b73b12-b2f6-4c4e-8929-94f84dd2a57d"
        )
        mock_oas_get(m)
        mock_resource_list(m, "resultaattypeomschrijvingen")

        selectielijstklasse_url = (
            "https://selectielijst.openzaak.nl/api/v1/"
            "resultaten/d92e5a77-c523-4273-b8e0-c912115ef156"
        )
        m.get(
            f"{_get_base_url()}resultaten?{urlencode({'procesType': procestype_url})}",
            json={
                "count": 100,
                "next": None,
                "previous": None,
                "results": [
                    {
                        "algemeenBestuurEnInrichtingOrganisatie": True,
                        "alleTaakgebieden": False,
                        "bedrijfsvoeringEnPersoneel": True,
                        "bewaartermijn": "P5Y",
                        "burgerzaken": True,
                        "economie": False,
                        "generiek": True,
                        "heffenBelastingen": False,
                        "herkomst": "Risicoanalyse",
                        "naam": "Niet doorgegaan",
                        "nummer": 4,
                        "omschrijving": "",
                        "onderwijs": False,
                        "procesType": procestype_url,
                        "procestermijn": "nihil",
                        "procestermijnOpmerking": "",
                        "procestermijnWeergave": "Nihil",
                        "publiekeInformatieEnRegistratie": False,
                        "sociaalDomein": False,
                        "specifiek": False,
                        "sportCultuurEnRecreatie": False,
                        "toelichting": "",
                        "url": selectielijstklasse_url,
                        "veiligheid": False,
                        "verkeerEnVervoer": False,
                        "vhrosv": False,
                        "volksgezonheidEnMilieu": False,
                        "volledigNummer": "1.4",
                        "waardering": "vernietigen",
                    },
                ],
            },
        )
        mock_resource_get(m, "procestypen", procestype_url)

        zaaktype = ZaakTypeFactory.create(selectielijst_procestype=procestype_url)
        query_params = urlencode(
            {
                "zaaktype__id__exact": zaaktype.id,
                "zaaktype": zaaktype.id,
                "catalogus": zaaktype.catalogus.pk,
            }
        )
        url = f"{reverse('admin:catalogi_resultaattype_add')}?_changelist_filters={query_params}"

        response = self.app.get(url)

        self.assertEqual(response.status_code, 200)

        form = response.forms["resultaattype_form"]

        zaaktype_procestype = (
            response.html("div", {"class": "field-get_zaaktype_procestype"})[0]
            .find_all("div")[-1]
            .text
        )
        self.assertEqual(zaaktype_procestype, "1 - Instellen en inrichten organisatie")

        field = form.fields["selectielijstklasse"][0]

        self.assertEqual(field.tag, "input")
        self.assertEqual(len(field.options), 1)
        # first element of JSON response
        self.assertEqual(
            field._value,
            "https://selectielijst.openzaak.nl/api/v1/resultaten/d92e5a77-c523-4273-b8e0-c912115ef156",
        )