Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions dref/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2077,6 +2077,37 @@ def test_filter_active_dref(self):
self.assertEqual(len(response.data["results"]), 1)
self.assertEqual(response.data["results"][0]["final_report_details"]["id"], dref_final_report.id)

def test_search_active_dref(self):
country = Country.objects.create(name="Searchable Country")
dref_by_title = DrefFactory.create(
is_active=True, title="Cyclone readiness", appeal_code="MDRAA001", created_by=self.root_user
)
dref_by_country = DrefFactory.create(is_active=True, country=country, created_by=self.root_user)

url = "/api/v2/active-dref/"
self.client.force_authenticate(self.root_user)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data["results"]), 2)

response = self.client.get(f"{url}?search=cyclone")
self.assertEqual(response.status_code, 200)
self.assertEqual([item["id"] for item in response.data["results"]], [dref_by_title.id])

response = self.client.get(f"{url}?search=MDRAA001")
self.assertEqual(response.status_code, 200)
self.assertEqual([item["id"] for item in response.data["results"]], [dref_by_title.id])

# the affected country, not the national society
response = self.client.get(f"{url}?search=Searchable")
self.assertEqual(response.status_code, 200)
self.assertEqual([item["id"] for item in response.data["results"]], [dref_by_country.id])

# a missing search_fields would return every row here
response = self.client.get(f"{url}?search=nomatchhere")
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data["results"]), 0)

def test_dref_share_users(self):
user1 = UserFactory.create(
username="user1@test.com",
Expand Down
7 changes: 7 additions & 0 deletions dref/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,13 @@ class ActiveDrefOperationsViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = MiniDrefSerializer
permission_classes = [permissions.IsAuthenticated, DenyGuestUserPermission]
filterset_class = ActiveDrefFilterSet
search_fields = (
"title",
"appeal_code",
"country__name",
"national_society__name",
"disaster_type__name",
)

queryset = (
Dref.objects.select_related(
Expand Down
Loading