From db8f92cf1e4f5bb06a1c87fad2356f627eebdf59 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Tue, 24 Sep 2024 01:35:35 +0200 Subject: [PATCH] add tests --- src/backend/InvenTree/stock/test_api.py | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/backend/InvenTree/stock/test_api.py b/src/backend/InvenTree/stock/test_api.py index f1f881342d..228f06d39e 100644 --- a/src/backend/InvenTree/stock/test_api.py +++ b/src/backend/InvenTree/stock/test_api.py @@ -19,6 +19,7 @@ import build.models import company.models import part.models from common.models import InvenTreeCustomUserStateModel, InvenTreeSetting +from common.settings import set_global_setting from InvenTree.unit_test import InvenTreeAPITestCase from part.models import Part, PartTestTemplate from stock.models import ( @@ -671,6 +672,14 @@ class StockItemListTest(StockAPITestCase): for item in response: self.assertIsNone(item['serial']) + def test_filter_top_level(self): + """Filter StockItem by top level.""" + response = self.get_stock(top_level=True) + self.assertEqual(len(response), 29) + + response = self.get_stock(top_level=False) + self.assertEqual(len(response), 29) + def test_filter_by_has_batch(self): """Test the 'has_batch' filter, which tests if the stock item has been assigned a batch code.""" with_batch = self.get_stock(has_batch=1) @@ -925,6 +934,40 @@ class StockItemListTest(StockAPITestCase): self.list_url, {'location_detail': True, 'tests': True}, max_query_count=35 ) + def test_batch_apis(self): + """Test helper APIs for batch management.""" + set_global_setting( + 'STOCK_BATCH_CODE_TEMPLATE', '{% if item %}{{ item.pk }}{% endif %}' + ) + response = self.post(reverse('api-generate-batch-code')) + self.assertEqual(response.status_code, 201) + self.assertIn('batch_code', response.data) + self.assertEqual(len(response.data['batch_code']), 0) + + # With data + response = self.post(reverse('api-generate-batch-code'), {'item': 1}) + self.assertEqual(response.data['batch_code'], '1') + + # With full data + response = self.post( + reverse('api-generate-batch-code'), {'item': 1, 'quantity': 2} + ) + self.assertEqual(response.data['batch_code'], '1') + + # Generate serial number + response = self.post(reverse('api-generate-serial-number')) + self.assertIn('serial_number', response.data) + + # With full data + response = self.post( + reverse('api-generate-serial-number'), {'part': 1, 'quantity': 1} + ) + self.assertEqual(response.data['serial_number'], '1001') + response = self.post( + reverse('api-generate-serial-number'), {'part': 1, 'quantity': 3} + ) + self.assertEqual(response.data['serial_number'], '1001,1002,1003') + class CustomStockItemStatusTest(StockAPITestCase): """Tests for custom stock item statuses."""