2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-05-02 05:26:45 +00:00

Fix for add_tracking_entry in build.create_output (#8310)

- Also add new end-to-end unit tests
This commit is contained in:
Oliver 2024-10-18 11:41:04 +11:00 committed by GitHub
parent d58d34af25
commit c9a4e6bf7d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 82 additions and 2 deletions

View File

@ -940,7 +940,7 @@ class Build(
StockHistoryCode.BUILD_OUTPUT_CREATED,
user,
deltas={
'quantity': quantity,
'quantity': float(quantity),
'buildorder': self.pk,
'batch': batch,
'location': location.pk if location else None

View File

@ -1269,6 +1269,86 @@ class BuildListTest(BuildAPITest):
self.assertEqual(len(builds), 20)
class BuildOutputCreateTest(BuildAPITest):
"""Unit test for creating build output via API."""
def test_create_serialized_output(self):
"""Create a serialized build output via the API."""
build_id = 1
url = reverse('api-build-output-create', kwargs={'pk': build_id})
build = Build.objects.get(pk=build_id)
part = build.part
n_outputs = build.output_count
n_items = part.stock_items.count()
# Post with invalid data
response = self.post(
url,
data={
'quantity': 10,
'serial_numbers': '1-100',
},
expected_code=400
)
self.assertIn('Group range 1-100 exceeds allowed quantity (10)', str(response.data['serial_numbers']))
# Build outputs have not increased
self.assertEqual(n_outputs, build.output_count)
# Stock items have not increased
self.assertEqual(n_items, part.stock_items.count())
response = self.post(
url,
data={
'quantity': 5,
'serial_numbers': '1,2,3-5',
},
expected_code=201
)
# Build outputs have incdeased
self.assertEqual(n_outputs + 5, build.output_count)
# Stock items have increased
self.assertEqual(n_items + 5, part.stock_items.count())
# Serial numbers have been created
for sn in range(1, 6):
self.assertTrue(part.stock_items.filter(serial=sn).exists())
def test_create_unserialized_output(self):
"""Create an unserialized build output via the API."""
build_id = 1
url = reverse('api-build-output-create', kwargs={'pk': build_id})
build = Build.objects.get(pk=build_id)
part = build.part
n_outputs = build.output_count
n_items = part.stock_items.count()
# Create a single new output
self.post(
url,
data={
'quantity': 10,
},
expected_code=201
)
# Build outputs have increased
self.assertEqual(n_outputs + 1, build.output_count)
# Stock items have increased
self.assertEqual(n_items + 1, part.stock_items.count())
class BuildOutputScrapTest(BuildAPITest):
"""Unit tests for scrapping build outputs"""

View File

@ -873,7 +873,7 @@ class PurchaseOrder(TotalPriceMixin, Order):
deltas=tracking_info,
location=location,
purchaseorder=self,
quantity=quantity,
quantity=float(quantity),
)
# Update the number of parts received against the particular line item