Skip to content

Commit c529806

Browse files
committed
Address additional PR feedback see HEA-651
1 parent a435cca commit c529806

File tree

4 files changed

+38
-18
lines changed

4 files changed

+38
-18
lines changed

apps/baseline/tests/test_viewsets.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ def test_filter_by_wealth_characteristic(self):
589589
self.assertEqual(len(response.json()), 1)
590590

591591

592-
class LivelihoodBaselineFacetedSearchViewTestCase(APITestCase):
592+
class LivelihoodZoneBaselineFacetedSearchViewTestCase(APITestCase):
593593
def setUp(self):
594594
self.category1 = LivelihoodCategoryFactory()
595595
self.baseline1 = LivelihoodZoneBaselineFactory(main_livelihood_category=self.category1)
@@ -618,17 +618,38 @@ def setUp(self):
618618
wealth_group__livelihood_zone_baseline=self.baseline2, wealth_characteristic=self.characteristic2
619619
)
620620
self.characteristic3 = WealthCharacteristicFactory()
621-
self.strategy = LivelihoodStrategyFactory(product=self.product1)
621+
self.strategy = LivelihoodStrategyFactory(product=self.product1, livelihood_zone_baseline=self.baseline3)
622622
self.baseline = LivelihoodZoneBaselineFactory(main_livelihood_category=self.category1)
623-
self.url = reverse("livelihood-baseline-faceted-search")
623+
self.url = reverse("livelihood-zone-baseline-faceted-search")
624624

625625
def test_search_with_product(self):
626626
# Test when search matches entries
627627
response = self.client.get(self.url, {"search": self.product1.description_en, "language": "en"})
628628
self.assertEqual(response.status_code, 200)
629-
data = response.data
630-
self.assertEqual(len(data["products"]), 1)
631-
self.assertEqual(data["products"][0]["count"], 2) # 2 zones have this proudct
629+
search_data = response.data
630+
self.assertEqual(len(search_data["products"]), 1)
631+
self.assertEqual(search_data["products"][0]["count"], 2) # 2 zones have this product
632+
# confirm the product value is correct
633+
self.assertEqual(search_data["products"][0]["value"], self.product1.cpc)
634+
# Apply the filters to the baseline
635+
baseline_url = reverse("livelihoodzonebaseline-list")
636+
response = self.client.get(
637+
baseline_url, {search_data["products"][0]["filter"]: search_data["products"][0]["value"]}
638+
)
639+
self.assertEqual(response.status_code, 200)
640+
self.assertEqual(len(json.loads(response.content)), 2)
641+
data = json.loads(response.content)
642+
self.assertTrue(any(d["name"] == self.baseline1.name for d in data))
643+
self.assertTrue(any(d["name"] == self.baseline3.name for d in data))
644+
self.assertFalse(any(d["name"] == self.baseline2.name for d in data))
645+
646+
response = self.client.get(baseline_url, {search_data["items"][0]["filter"]: search_data["items"][0]["value"]})
647+
self.assertEqual(response.status_code, 200)
648+
self.assertEqual(len(json.loads(response.content)), 1)
649+
data = json.loads(response.content)
650+
self.assertTrue(any(d["name"] == self.baseline1.name for d in data))
651+
self.assertFalse(any(d["name"] == self.baseline2.name for d in data))
652+
self.assertFalse(any(d["name"] == self.baseline3.name for d in data))
632653
# Search by the second product
633654
response = self.client.get(
634655
self.url,
@@ -637,8 +658,8 @@ def test_search_with_product(self):
637658
},
638659
)
639660
self.assertEqual(response.status_code, 200)
640-
data = response.data
641-
self.assertEqual(len(data["products"]), 0)
661+
search_data = response.data
662+
self.assertEqual(len(search_data["products"]), 0)
642663

643664
def test_search_with_wealth_characterstics(self):
644665
# Test when search matches entries

apps/baseline/viewsets.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from django.apps import apps
2+
from django.conf import settings
23
from django.db import models
34
from django.db.models import F, OuterRef, Q, Subquery
45
from django.db.models.functions import Coalesce, NullIf
@@ -1860,7 +1861,7 @@ def get_calculations_on_aggregates(self):
18601861
]
18611862

18621863

1863-
class LivelihoodBaselineFacetedSearchView(APIView):
1864+
class LivelihoodZoneBaselineFacetedSearchView(APIView):
18641865
"""
18651866
Performs a faceted search to find Livelihood Zone Baselines using a specified search term.
18661867
@@ -1870,17 +1871,14 @@ class LivelihoodBaselineFacetedSearchView(APIView):
18701871
"""
18711872

18721873
renderer_classes = [JSONRenderer]
1873-
permission_classes = []
1874-
1875-
def get_permissions(self):
1876-
return [AllowAny()]
1874+
permission_classes = [AllowAny]
18771875

18781876
def get(self, request, format=None):
18791877
"""
18801878
Return a faceted set of matching filters
18811879
"""
18821880
results = {}
1883-
search_term = request.query_params.get("search", "")
1881+
search_term = request.query_params.get(settings.REST_FRAMEWORK["SEARCH_PARAM"], "")
18841882
language = request.query_params.get("language", "en")
18851883

18861884
if search_term:

hea/settings/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
"TEST_REQUEST_DEFAULT_FORMAT": "json",
151151
"EXCEPTION_HANDLER": "apps.common.exception_handlers.drf_exception_handler",
152152
"STRICT_JSON": True,
153+
"SEARCH_PARAM": "search",
153154
}
154155

155156
ROOT_URLCONF = "hea.urls"

hea/urls.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
HazardViewSet,
2525
HuntingViewSet,
2626
LivelihoodActivityViewSet,
27-
LivelihoodBaselineFacetedSearchView,
27+
LivelihoodZoneBaselineFacetedSearchView,
2828
LivelihoodProductCategoryViewSet,
2929
LivelihoodStrategyViewSet,
3030
LivelihoodZoneBaselineReportViewSet,
@@ -133,9 +133,9 @@
133133
]
134134
urlpatterns += [
135135
path(
136-
"api/livelihoodbaselinefacetedsearch/",
137-
LivelihoodBaselineFacetedSearchView.as_view(),
138-
name="livelihood-baseline-faceted-search",
136+
"api/livelihoodzonebaselinefacetedsearch/",
137+
LivelihoodZoneBaselineFacetedSearchView.as_view(),
138+
name="livelihood-zone-baseline-faceted-search",
139139
),
140140
]
141141

0 commit comments

Comments
 (0)