diff --git a/application/routers/entity.py b/application/routers/entity.py index b9376650..7c7b0388 100644 --- a/application/routers/entity.py +++ b/application/routers/entity.py @@ -79,13 +79,20 @@ def get_entity( e, old_entity_status, new_entity_id = get_entity_query(session, entity) if old_entity_status == 410: - return templates.TemplateResponse( - "entity-gone.html", - { - "request": request, - "entity": str(entity), - }, - ) + if extension: + raise HTTPException( + detail=f"Entity {entity} has been removed", + status_code=410, + ) + else: + return templates.TemplateResponse( + "entity-gone.html", + { + "request": request, + "entity": str(entity), + }, + status_code=410, + ) elif old_entity_status == 301: if extension: return RedirectResponse( diff --git a/application/templates/entity-gone.html b/application/templates/entity-gone.html index b75266bf..5ef005a6 100644 --- a/application/templates/entity-gone.html +++ b/application/templates/entity-gone.html @@ -1,35 +1,22 @@ {% extends "layouts/layout.html" %} +{% set mainClasses = "govuk-main-wrapper--l" %} {% set templateName = "dl-info/entity-gone.html" %} {%- block content %} - - {% block recordHead %} - {% block recordTitle -%} - Entity Removed -

Entity Removed

- {%- endblock recordTitle %} - {% endblock recordHead %} - -

- This entity (#{{entity}}) has been removed. -

- - {%- endblock content %} - - {% block recordEnd %}{% endblock recordEnd %} - - {% block footerStart %} - {%- from "components/feedback/macro.jinja" import dlFeedback %} - {% set subject = "Feedback on removed entity with number " + entity %} - {{ dlFeedback({ - "text": "Spotted an issue? Let us know so we can improve the data.", - "action": { - "text": "There is something wrong with the data", - "href": "mailto:" + templateVar.email + "?subject=" + subject - }, - "container": true - }) - }} - {% endblock footerStart %} - - {%- block pageScripts %}{%- endblock %} +
+
+

Entity Removed

+ +

+ This entity (#{{ entity }}) has been removed. +

+ + {% set subject = "Feedback on removed entity with number " + entity %} +
+ Spotted an issue? You can + contact the Planning Data team + if you need to speak to someone about this page. +
+
+
+{%- endblock %} diff --git a/tests/integration/test_api.py b/tests/integration/test_api.py index 58d054cd..01952099 100644 --- a/tests/integration/test_api.py +++ b/tests/integration/test_api.py @@ -120,10 +120,28 @@ def test_old_entity_gone_shown(test_data_old_entities, client, exclude_middlewar """ old_entity = test_data_old_entities["old_entities"][410][0] response = client.get(f"/entity/{old_entity.old_entity_id}", allow_redirects=False) - assert response.status_code == 200 + assert response.status_code == 410 assert ( f"This entity (#{old_entity.old_entity_id}) has been removed." in response.text ) + assert ( + "text/html" in response.headers["Content-Type"] + ), "Expected response in text/html format" + + +def test_old_entity_gone_json_shown(test_data_old_entities, client, exclude_middleware): + """ + Test entity endpoint returns entity gone content + """ + old_entity = test_data_old_entities["old_entities"][410][0] + response = client.get( + f"/entity/{old_entity.old_entity_id}.json", allow_redirects=False + ) + assert response.status_code == 410 + assert ( + response.headers["Content-Type"] == "application/json" + ), "Expected response in JSON format" + assert f"Entity {old_entity.old_entity_id} has been removed" in response.text def test_dataset_json_endpoint_returns_as_expected(test_data, client): @@ -308,6 +326,9 @@ def test_get_by_curie_redirects_to_entity(test_data, client, exclude_middleware) def test_get_by_curie_404s_for_unknown_reference(test_data, client, exclude_middleware): response = client.get("/curie/not:found", allow_redirects=False) assert response.status_code == 404 + expected_content = "Page not found" + # Check if the expected content is present in the response body + assert expected_content in response.text def test_get_dataset_unknown_returns_404(client, exclude_middleware): diff --git a/tests/unit/routers/test_entity.py b/tests/unit/routers/test_entity.py index bdecb330..f067d4a2 100644 --- a/tests/unit/routers/test_entity.py +++ b/tests/unit/routers/test_entity.py @@ -212,16 +212,11 @@ def test_get_entity_old_entity_gone_returned_json(mocker): request = MagicMock() extension = MagicMock() extension.value = "json" - result = get_entity(request=request, entity="11000000", extension=extension) try: - result.template.render(result.context) + get_entity(request=request, entity="11000000", extension=extension) + assert False, "Expected HTTPException to be raised" + except HTTPException: assert True - except Exception: - if hasattr(result, "context"): - logging.warning(f"context:{result.context}") - else: - logging.warning("result has no context") - assert False, "template unable to render, missing variable(s) from context" def test_get_entity_old_entity_gone_returned_geojson(mocker): @@ -231,16 +226,11 @@ def test_get_entity_old_entity_gone_returned_geojson(mocker): request = MagicMock() extension = MagicMock() extension.value = "geojson" - result = get_entity(request=request, entity="11000000", extension=extension) try: - result.template.render(result.context) + get_entity(request=request, entity="11000000", extension=extension) + assert False, "Expected HTTPException to be raised" + except HTTPException: assert True - except Exception: - if hasattr(result, "context"): - logging.warning(f"context:{result.context}") - else: - logging.warning("result has no context") - assert False, "template unable to render, missing variable(s) from context" def test_get_entity_old_entity_redirect_returned_html(mocker):