From 13854e6edd82d5c3d20210f0f145956b12cd6346 Mon Sep 17 00:00:00 2001 From: Wyatt Pearsall Date: Thu, 30 Jul 2026 09:54:50 -0700 Subject: [PATCH 1/2] Update path handling --- complaint_search/urls.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/complaint_search/urls.py b/complaint_search/urls.py index 347d821..b25cba3 100644 --- a/complaint_search/urls.py +++ b/complaint_search/urls.py @@ -8,21 +8,20 @@ urlpatterns = [ re_path( - r"^_suggest_company", + r"^_suggest_company/$", complaint_search.views.suggest_company, name="suggest_company", ), re_path( - r"^_suggest_zip", + r"^_suggest_zip/$", complaint_search.views.suggest_zip, name="suggest_zip", ), - re_path(r"^_suggest", complaint_search.views.suggest, name="suggest"), re_path( r"^(?P[0-9]+)$", complaint_search.views.document, name="complaint" ), re_path(r"^$", complaint_search.views.search, name="search"), - re_path(r"^geo/states", complaint_search.views.states, name="states"), + re_path(r"^geo/states$", complaint_search.views.states, name="states"), re_path(r"^geo", RedirectView.as_view(url="/geo/states"), name="geo"), - re_path(r"^trends", complaint_search.views.trends, name="trends"), + re_path(r"^trends$", complaint_search.views.trends, name="trends"), ] From c312bb178a6eaad3d0b706b118643b1c83c34c8e Mon Sep 17 00:00:00 2001 From: Wyatt Pearsall Date: Thu, 30 Jul 2026 19:21:46 -0700 Subject: [PATCH 2/2] Remove suggest view and tests --- complaint_search/tests/test_views_suggest.py | 106 ------------------- complaint_search/views.py | 13 --- 2 files changed, 119 deletions(-) delete mode 100644 complaint_search/tests/test_views_suggest.py diff --git a/complaint_search/tests/test_views_suggest.py b/complaint_search/tests/test_views_suggest.py deleted file mode 100644 index fd28ee1..0000000 --- a/complaint_search/tests/test_views_suggest.py +++ /dev/null @@ -1,106 +0,0 @@ -from unittest import mock - -from django.conf import settings -from django.urls import reverse - -from opensearchpy import TransportError -from rest_framework import status -from rest_framework.test import APITestCase - - -class SuggestTests(APITestCase): - def setUp(self): - pass - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest_no_param(self, mock_essuggest): - """ - Suggesting with no parameters - """ - url = reverse("complaint_search:suggest") - mock_essuggest.return_value = "OK" - response = self.client.get(url) - self.assertEqual(response.status_code, status.HTTP_200_OK) - mock_essuggest.assert_called_once_with() - self.assertEqual("OK", response.data) - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest_text__valid(self, mock_essuggest): - """ - Suggesting with no parameters - """ - url = reverse("complaint_search:suggest") - param = {"text": "Mortgage"} - mock_essuggest.return_value = "OK" - response = self.client.get(url, param) - self.assertEqual(response.status_code, status.HTTP_200_OK) - mock_essuggest.assert_called_once_with(**param) - self.assertEqual("OK", response.data) - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest_size__valid(self, mock_essuggest): - """ - Suggesting with no parameters - """ - url = reverse("complaint_search:suggest") - param = {"size": 50} - mock_essuggest.return_value = "OK" - response = self.client.get(url, param) - self.assertEqual(response.status_code, status.HTTP_200_OK) - mock_essuggest.assert_called_once_with(**param) - self.assertEqual("OK", response.data) - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest_with_size__invalid_smaller_than_min_number( - self, mock_essuggest - ): - url = reverse("complaint_search:suggest") - params = {"size": 0} - mock_essuggest.return_value = "OK" - response = self.client.get(url, params) - self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) - mock_essuggest.assert_not_called() - self.assertDictEqual( - {"size": ["Ensure this value is greater than or equal to 1."]}, - response.data, - ) - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest_size__invalid_exceed_number(self, mock_essuggest): - """ - Suggesting with no parameters - """ - url = reverse("complaint_search:suggest") - param = {"size": 100001} - mock_essuggest.return_value = "OK" - response = self.client.get(url, param) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - mock_essuggest.assert_not_called() - self.assertDictEqual( - {"size": ["Ensure this value is less than or equal to 100000."]}, - response.data, - ) - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest_cors_headers(self, mock_essuggest): - """ - Make sure the response has CORS headers in debug mode - """ - settings.DEBUG = True - url = reverse("complaint_search:suggest") - mock_essuggest.return_value = "OK" - response = self.client.get(url) - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertTrue(response.has_header("Access-Control-Allow-Origin")) - - @mock.patch("complaint_search.es_interface.suggest") - def test_suggest__transport_error(self, mock_essuggest): - mock_essuggest.side_effect = TransportError("N/A", "Error") - url = reverse("complaint_search:suggest") - param = {"text": "test"} - response = self.client.get(url, param) - self.assertEqual(response.status_code, 424) - self.assertDictEqual( - {"error": "There was an error calling OpenSearch"}, - response.data, - ) diff --git a/complaint_search/views.py b/complaint_search/views.py index 5b1100d..c1af432 100644 --- a/complaint_search/views.py +++ b/complaint_search/views.py @@ -179,19 +179,6 @@ def search(request): return response -@api_view(["GET"]) -@catch_es_error -def suggest(request): - data = _parse_query_params(request.query_params, ["text", "size"]) - - serializer = SuggestInputSerializer(data=data) - if serializer.is_valid(): - results = es_interface.suggest(**serializer.validated_data) - return Response(results, headers=_build_headers()) - else: - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - def _suggest_field(data, field, display_field=None): serializer = SuggestFilterInputSerializer(data=data) if serializer.is_valid():