From 44bcf2c7e8b720bcbfe39a8257d22b0b17f81cf1 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 1 Aug 2025 11:16:15 +1000 Subject: [PATCH] API search field bug (#10108) * Additional unit tests * Fix search field * Additional unit test to apply search term * Bump API version --- .../InvenTree/InvenTree/api_version.py | 6 ++- src/backend/InvenTree/order/api.py | 2 +- src/backend/InvenTree/order/test_api.py | 44 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index 977ab1358b..74f70f4175 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,11 +1,15 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 375 +INVENTREE_API_VERSION = 376 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ + +v376 -> 2025-08-01 : https://github.com/inventree/InvenTree/pull/10108 + - Fix search fields for ReturnOrderLineItem API list endpoint + v375 -> 2025-07-28 : https://github.com/inventree/InvenTree/pull/10095 - Sorts searched fields to keep API stable diff --git a/src/backend/InvenTree/order/api.py b/src/backend/InvenTree/order/api.py index 35ca30f849..6361f11adb 100644 --- a/src/backend/InvenTree/order/api.py +++ b/src/backend/InvenTree/order/api.py @@ -1641,7 +1641,7 @@ class ReturnOrderLineItemList( ordering_fields = ['reference', 'target_date', 'received_date'] search_fields = [ - 'item_serial', + 'item__serial', 'item__part__name', 'item__part__description', 'reference', diff --git a/src/backend/InvenTree/order/test_api.py b/src/backend/InvenTree/order/test_api.py index 331ce1e257..0db0ccb697 100644 --- a/src/backend/InvenTree/order/test_api.py +++ b/src/backend/InvenTree/order/test_api.py @@ -2507,6 +2507,50 @@ class ReturnOrderTests(InvenTreeAPITestCase): calendar = Calendar.from_ical(response.content) self.assertIsInstance(calendar, Calendar) + def test_export(self): + """Test data export for the ReturnOrder API endpoints.""" + # Export return orders + data = self.export_data( + reverse('api-return-order-list'), + export_format='csv', + decode=True, + expected_code=200, + ) + + self.process_csv( + data, + required_cols=['Reference', 'Customer'], + required_rows=models.ReturnOrder.objects.count(), + ) + + N = models.ReturnOrderLineItem.objects.count() + self.assertGreater(N, 0, 'No ReturnOrderLineItems found!') + + # Export return order lines + data = self.export_data( + reverse('api-return-order-line-list'), + export_format='csv', + decode=True, + expected_code=200, + ) + + self.process_csv( + data, required_rows=N, required_cols=['Order', 'Reference', 'Target Date'] + ) + + # Export again, with a search term + data = self.export_data( + reverse('api-return-order-line-list'), + params={'search': 'xyz'}, + export_format='csv', + decode=True, + expected_code=200, + ) + + self.process_csv( + data, required_rows=0, required_cols=['Order', 'Reference', 'Target Date'] + ) + class OrderMetadataAPITest(InvenTreeAPITestCase): """Unit tests for the various metadata endpoints of API."""