From 8dfe90bcba92e231cbb96014008b16f5bfb9568d Mon Sep 17 00:00:00 2001 From: "mark.j0hnst0n" Date: Wed, 23 Apr 2025 14:45:52 +0100 Subject: [PATCH 1/3] get generated case documents --- caseworker/f680/views.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/caseworker/f680/views.py b/caseworker/f680/views.py index a141dcbc20..e088fa5f84 100644 --- a/caseworker/f680/views.py +++ b/caseworker/f680/views.py @@ -21,7 +21,7 @@ from caseworker.cases.forms.queries import CloseQueryForm from caseworker.cases.helpers.case import CaseworkerMixin from caseworker.cases.helpers.ecju_queries import get_ecju_queries -from caseworker.cases.services import get_case, post_ecju_query, get_application_documents +from caseworker.cases.services import get_case, post_ecju_query, get_application_documents, get_case_documents from caseworker.f680.forms import NewECJUQueryForm from caseworker.cases.views.queries import CloseQueryMixin from caseworker.core.constants import ALL_CASES_QUEUE_ID @@ -197,16 +197,26 @@ class SupportingDocumentsView(LoginRequiredMixin, F680CaseworkerMixin, TemplateV @expect_status( HTTPStatus.OK, - "Error retreiving supporting documents", - "Unexpected error retreiving supporting documents", + "Error retreiving uploaded supporting documents", + "Unexpected error retreiving uploaded supporting documents", ) - def get_supporting_documents(self): + def get_exporter_uploaded_supporting_documents(self): return get_application_documents(self.request, self.case_id) + @expect_status( + HTTPStatus.OK, + "Error retreiving generated documents", + "Unexpected error retreiving generated documents", + ) + def get_caseworker_generated_documents(self): + return get_case_documents(self.request, self.case_id) + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - documents, _ = self.get_supporting_documents() - context["supporting_documents"] = documents["results"] + uploaded_documents, _ = self.get_exporter_uploaded_supporting_documents() + generated_documents, _ = self.get_caseworker_generated_documents() + documents = uploaded_documents["results"] + generated_documents["documents"] + context["supporting_documents"] = documents return context From 8249559738bb9a0fa367dd4be106ad2de3b1d3e8 Mon Sep 17 00:00:00 2001 From: "mark.j0hnst0n" Date: Wed, 23 Apr 2025 14:59:59 +0100 Subject: [PATCH 2/3] testing added for successfully getting all documents --- caseworker/f680/tests/test_views.py | 36 +++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/caseworker/f680/tests/test_views.py b/caseworker/f680/tests/test_views.py index ea0593e9cc..8186cd6ce1 100644 --- a/caseworker/f680/tests/test_views.py +++ b/caseworker/f680/tests/test_views.py @@ -1,4 +1,5 @@ import pytest +import uuid import io from django.http import StreamingHttpResponse @@ -444,7 +445,7 @@ def supporting_document(data_f680_case): def document_data(data_f680_case): return [ { - "id": "a66ebfb3-72c8-4a63-82f6-0519830729ce", # /PS-IGNORE + "id": str(uuid.uuid4()), # /PS-IGNORE "name": "sample_doc.pdf", "s3_key": "sample_doc.pdf", "description": "my item", @@ -456,6 +457,22 @@ def document_data(data_f680_case): ] +@pytest.fixture +def generated_document_data(data_f680_case): + return [ + { + "id": str(uuid.uuid4()), # /PS-IGNORE + "name": "application_letter.pdf", + "s3_key": "application_letter.pdf", + "description": "my item", + "size": 18, + "safe": True, + "document_type": None, + "application": data_f680_case["id"], + }, + ] + + @pytest.fixture def document_data_json(document_data): return { @@ -465,6 +482,13 @@ def document_data_json(document_data): } +@pytest.fixture +def generated_document_data_json(generated_document_data): + return { + "documents": generated_document_data, + } + + @pytest.fixture def mock_get_supporting_documents(requests_mock, data_queue, f680_case_id): url = client._build_absolute_uri(f"/queues/{data_queue}/cases/{f680_case_id}/f680/supporting-documents/") @@ -483,6 +507,12 @@ def mock_f680_supporting_documents_get(requests_mock, f680_case_id, document_dat return requests_mock.get(url=url, json=document_data_json) +@pytest.fixture +def mock_f680_generated_documents_get(requests_mock, f680_case_id, generated_document_data_json): + url = client._build_absolute_uri(f"/cases/{f680_case_id}/documents/") + return requests_mock.get(url=url, json=generated_document_data_json) + + @pytest.fixture def mock_f680_supporting_documents_get_failure(requests_mock, f680_case_id, document_data_json): url = client._build_absolute_uri(f"/caseworker/applications/{f680_case_id}/supporting-document/") @@ -522,7 +552,9 @@ def test_GET_documents_for_case_success( mock_get_supporting_documents, mock_f680_case_with_submitted_by, mock_f680_supporting_documents_get, + mock_f680_generated_documents_get, document_data, + generated_document_data, ): url = reverse("cases:f680:supporting_documents", kwargs={"queue_pk": data_queue["id"], "pk": f680_case_id}) @@ -532,7 +564,7 @@ def test_GET_documents_for_case_success( response = authorized_client.get(url) assert response.status_code == 200 - assert response.context["supporting_documents"] == document_data + assert response.context["supporting_documents"] == document_data + generated_document_data content = BeautifulSoup(response.content, "html.parser") From 126ff6dd142264295313787f834501d3279f03bc Mon Sep 17 00:00:00 2001 From: "mark.j0hnst0n" Date: Wed, 23 Apr 2025 15:38:40 +0100 Subject: [PATCH 3/3] add further api call failure test --- caseworker/f680/tests/test_views.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/caseworker/f680/tests/test_views.py b/caseworker/f680/tests/test_views.py index 8186cd6ce1..a85572b2d3 100644 --- a/caseworker/f680/tests/test_views.py +++ b/caseworker/f680/tests/test_views.py @@ -513,6 +513,12 @@ def mock_f680_generated_documents_get(requests_mock, f680_case_id, generated_doc return requests_mock.get(url=url, json=generated_document_data_json) +@pytest.fixture +def mock_f680_generated_documents_get_fail(requests_mock, f680_case_id): + url = client._build_absolute_uri(f"/cases/{f680_case_id}/documents/") + return requests_mock.get(url=url, status_code=400, json={}) + + @pytest.fixture def mock_f680_supporting_documents_get_failure(requests_mock, f680_case_id, document_data_json): url = client._build_absolute_uri(f"/caseworker/applications/{f680_case_id}/supporting-document/") @@ -575,7 +581,7 @@ def test_GET_documents_for_case_success( ) assert content.find(id="document-description").text.strip() == "my item" - def test_GET_documents_for_case_failure( + def test_GET_uploaded_supporting_documents_for_case_fail( self, authorized_client, data_queue, @@ -583,6 +589,25 @@ def test_GET_documents_for_case_failure( mock_get_supporting_documents_failure, mock_f680_case_with_submitted_by, mock_f680_supporting_documents_get_failure, + mock_f680_generated_documents_get, + ): + + url = reverse("cases:f680:supporting_documents", kwargs={"queue_pk": data_queue["id"], "pk": f680_case_id}) + + with pytest.raises(ServiceError) as error: + authorized_client.get(url) + + assert str(error.value) == "Error retreiving uploaded supporting documents" + + def test_GET_uploaded_generated_documents_for_case_fail( + self, + authorized_client, + data_queue, + f680_case_id, + mock_get_supporting_documents, + mock_f680_case_with_submitted_by, + mock_f680_supporting_documents_get, + mock_f680_generated_documents_get_fail, ): url = reverse("cases:f680:supporting_documents", kwargs={"queue_pk": data_queue["id"], "pk": f680_case_id}) @@ -590,7 +615,7 @@ def test_GET_documents_for_case_failure( with pytest.raises(ServiceError) as error: authorized_client.get(url) - assert str(error.value) == "Error retreiving supporting documents" + assert str(error.value) == "Error retreiving generated documents" def test_GET_stream_document_for_case_success( self,