Skip to content

Commit

Permalink
[#2098] Process PR feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
pi-sigma committed Mar 14, 2024
1 parent 1e3d523 commit bfb2dfc
Show file tree
Hide file tree
Showing 12 changed files with 243 additions and 218 deletions.
31 changes: 30 additions & 1 deletion src/open_inwoner/accounts/views/contactmoments.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
from typing import Optional, TypedDict

from django.contrib.auth.mixins import AccessMixin
from django.http import Http404
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from django.views import View
from django.views.generic import TemplateView

from view_breadcrumbs import BaseBreadcrumbMixin
Expand Down Expand Up @@ -211,3 +212,31 @@ def get_context_data(self, **kwargs):
},
]
return ctx


class KlantContactMomentRedirectView(KlantContactMomentAccessMixin, View):
"""
Redirect to `KlantContactMomentDetailView` on the basis of contactmoment uuid
"""

def get(self, request, *args, **kwargs):
klanten_client = build_client("klanten")
contactmoment_client = build_client("contactmomenten")

klant = klanten_client.retrieve_klant(**get_fetch_parameters(self.request))
kcms = contactmoment_client.retrieve_klantcontactmomenten_for_klant(klant)

if not kcms:
raise Http404

contactmoment_uuid = kwargs["uuid"]
kcm = next(
(kcm for kcm in kcms if str(kcm.contactmoment.uuid) == contactmoment_uuid)
)

if not kcm:
raise Http404

return HttpResponseRedirect(
reverse("cases:contactmoment_detail", kwargs={"kcm_uuid": kcm.uuid})
)
66 changes: 24 additions & 42 deletions src/open_inwoner/cms/cases/tests/test_contactform.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
DigidUserFactory,
eHerkenningUserFactory,
)
from open_inwoner.openklant.clients import ContactmomentenClient
from open_inwoner.openklant.constants import Status
from open_inwoner.openklant.models import OpenKlantConfig
from open_inwoner.openklant.tests.data import CONTACTMOMENTEN_ROOT, KLANTEN_ROOT
Expand All @@ -41,6 +42,9 @@


@requests_mock.Mocker()
@patch.object(
ContactmomentenClient, "retrieve_objectcontactmomenten_for_zaak", autospec=True
)
@override_settings(
ROOT_URLCONF="open_inwoner.cms.tests.urls", MIDDLEWARE=PATCHED_MIDDLEWARE
)
Expand Down Expand Up @@ -326,14 +330,11 @@ def _setUpExtraMocks(self, m):
json=self.contactmoment,
)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_is_shown_if_open_klant_api_configured(self, m, ocm_mock):
def test_form_is_shown_if_open_klant_api_configured(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

self.assertTrue(self.ok_config.has_api_configuration())

Expand All @@ -343,14 +344,11 @@ def test_form_is_shown_if_open_klant_api_configured(self, m, ocm_mock):
self.assertTrue(response.context["case"]["contact_form_enabled"])
self.assertTrue(contact_form)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_is_shown_if_open_klant_email_configured(self, m, ocm_mock):
def test_form_is_shown_if_open_klant_email_configured(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

self.ok_config.register_email = "example@example.com"
self.ok_config.register_contact_moment = False
Expand All @@ -365,14 +363,13 @@ def test_form_is_shown_if_open_klant_email_configured(self, m, ocm_mock):
self.assertTrue(response.context["case"]["contact_form_enabled"])
self.assertTrue(contact_form)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_is_shown_if_open_klant_email_and_api_configured(self, m, ocm_mock):
def test_form_is_shown_if_open_klant_email_and_api_configured(
self, m, contactmoment_mock
):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

self.ok_config.register_email = "example@example.com"
self.ok_config.save()
Expand All @@ -386,9 +383,11 @@ def test_form_is_shown_if_open_klant_email_and_api_configured(self, m, ocm_mock)
self.assertTrue(response.context["case"]["contact_form_enabled"])
self.assertTrue(contact_form)

def test_no_form_shown_if_open_klant_not_configured(self, m):
def test_no_form_shown_if_open_klant_not_configured(self, m, contactmoment_mock):
self._setUpMocks(m)

contactmoment_mock.return_value = []

# reset
self.ok_config.klanten_service = None
self.ok_config.contactmomenten_service = None
Expand All @@ -406,15 +405,10 @@ def test_no_form_shown_if_open_klant_not_configured(self, m):
self.assertFalse(response.context["case"]["contact_form_enabled"])
self.assertFalse(contact_form)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_no_form_shown_if_contact_form_disabled(self, m, ocm_mock):
def test_no_form_shown_if_contact_form_disabled(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []

CatalogusConfig.objects.all().delete()
self.zaak_type_config.delete()
self.zaak_type_config = ZaakTypeConfigFactory(
Expand All @@ -429,14 +423,11 @@ def test_no_form_shown_if_contact_form_disabled(self, m, ocm_mock):
self.assertFalse(response.context["case"]["contact_form_enabled"])
self.assertFalse(contact_form)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_success_with_api(self, m, ocm_mock):
def test_form_success_with_api(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

response = self.app.get(self.case_detail_url, user=self.user)
form = response.forms["contact-form"]
Expand Down Expand Up @@ -470,14 +461,11 @@ def test_form_success_with_api(self, m, ocm_mock):
},
)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_success_with_api_eherkenning_user(self, m, ocm_mock):
def test_form_success_with_api_eherkenning_user(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

for use_rsin_for_innNnpId_query_parameter in [True, False]:
with self.subTest(
Expand Down Expand Up @@ -540,14 +528,11 @@ def test_form_success_with_api_eherkenning_user(self, m, ocm_mock):
},
)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_success_with_email(self, m, ocm_mock):
def test_form_success_with_email(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

self.ok_config.register_email = "example@example.com"
self.ok_config.register_contact_moment = False
Expand Down Expand Up @@ -578,14 +563,11 @@ def test_form_success_with_email(self, m, ocm_mock):
_("Contact formulier inzending vanaf Open Inwoner Platform"),
)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_form_success_with_bearth_email_and_api(self, m, ocm_mock):
def test_form_success_with_both_email_and_api(self, m, contactmoment_mock):
self._setUpMocks(m)
self._setUpExtraMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

self.ok_config.register_email = "example@example.com"
self.ok_config.save()
Expand Down
18 changes: 8 additions & 10 deletions src/open_inwoner/cms/cases/tests/test_htmx.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from open_inwoner.accounts.tests.factories import DigidUserFactory
from open_inwoner.cms.tests import cms_tools
from open_inwoner.configurations.models import SiteConfiguration
from open_inwoner.openklant.clients import ContactmomentenClient
from open_inwoner.openklant.constants import Status
from open_inwoner.openklant.models import OpenKlantConfig
from open_inwoner.openklant.tests.data import CONTACTMOMENTEN_ROOT, KLANTEN_ROOT
Expand Down Expand Up @@ -44,6 +45,9 @@

@tag("e2e")
@requests_mock.Mocker()
@patch.object(
ContactmomentenClient, "retrieve_objectcontactmomenten_for_zaak", autospec=True
)
@override_settings(ROOT_URLCONF="open_inwoner.cms.tests.urls")
class CasesPlaywrightTests(
AssertMockMatchersMixin,
Expand Down Expand Up @@ -407,13 +411,10 @@ def _setUpMocks(self, m):
),
]

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_cases(self, m, ocm_mock):
def test_cases(self, m, contactmoment_mock):
self._setUpMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

context = self.browser.new_context(storage_state=self.user_login_state)

Expand Down Expand Up @@ -505,13 +506,10 @@ def test_cases(self, m, ocm_mock):
# finally check if our mock matchers are accurate
self.assertMockMatchersCalled(self.matchers)

@patch(
"open_inwoner.cms.cases.views.status.InnerCaseDetailView.get_objectcontactmomenten"
)
def test_multiple_file_upload(self, m, ocm_mock):
def test_multiple_file_upload(self, m, contactmoment_mock):
self._setUpMocks(m)

ocm_mock.return_value = []
contactmoment_mock.return_value = []

# Keep track of uploaded files (schemas/EnkelvoudigInformatieObject array)
# This list is updated by mocks after uploading the files.
Expand Down
4 changes: 2 additions & 2 deletions src/open_inwoner/cms/cases/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from open_inwoner.accounts.views.contactmoments import (
KlantContactMomentDetailView,
KlantContactMomentListView,
KlantContactMomentRedirectView,
)

from .views import (
Expand All @@ -11,7 +12,6 @@
CaseDocumentUploadFormView,
InnerCaseDetailView,
InnerCaseListView,
KCMRedirectView,
OuterCaseDetailView,
OuterCaseListView,
)
Expand All @@ -31,7 +31,7 @@
),
path(
"contactmoment/<str:uuid>/",
KCMRedirectView.as_view(),
KlantContactMomentRedirectView.as_view(),
name="kcm_redirect",
),
path(
Expand Down
2 changes: 0 additions & 2 deletions src/open_inwoner/cms/cases/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
CaseDocumentDownloadView,
CaseDocumentUploadFormView,
InnerCaseDetailView,
KCMRedirectView,
OuterCaseDetailView,
)

Expand All @@ -16,5 +15,4 @@
"CaseDocumentUploadFormView",
"InnerCaseDetailView",
"OuterCaseDetailView",
"KCMRedirectView",
]
Loading

0 comments on commit bfb2dfc

Please sign in to comment.