From 1c38d81a5f3feef9f8dc91e24c7f6f401597d295 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 23 Feb 2021 10:58:23 +0000 Subject: [PATCH] adde total_results to search response, for better frontend pagination --- products/tests.py | 4 +++- products/views.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/products/tests.py b/products/tests.py index 46f57c7..66e639c 100644 --- a/products/tests.py +++ b/products/tests.py @@ -478,6 +478,7 @@ class ProductSearchTest(TestCase): url = f"{self.endpoint}?query_string={query_string}" # send in request response = self.client.get(url) + # import ipdb; ipdb.set_trace() # check response self.assertEqual(response.status_code, 200) @@ -521,8 +522,9 @@ class ProductSearchTest(TestCase): self.assertEqual(response.status_code, 200) # load response data payload = response.json() - # check for object creation self.assertEquals(len(payload['products']), limit) + self.assertEquals(payload['total_results'], len(expected_instances)) + class MyProductsViewTest(APITestCase): """my_products tests diff --git a/products/views.py b/products/views.py index f930635..7a36b1f 100644 --- a/products/views.py +++ b/products/views.py @@ -174,6 +174,8 @@ def product_search(request): ranked_products = sorted(result_list, key= lambda rank:rank.rank, reverse=True) serializer = SearchResultSerializer(ranked_products, many=True) product_results = [dict(i) for i in serializer.data] + total_results = len(product_results) + # check for pagination limit = request.GET.get('limit', None) offset = request.GET.get('offset', None) @@ -185,6 +187,6 @@ def product_search(request): limit = int(limit) product_results = product_results[:limit] - return Response(data={"filters": filters, "products": product_results}) + return Response(data={"filters": filters, "total_results": total_results, "products": product_results}) except Exception as e: return Response({"errors": {"details": str(e)}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)