mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-04 14:28:48 +00:00
Adding unit testing for new features
This commit is contained in:
parent
9e0120599f
commit
421db61f21
@ -440,8 +440,9 @@ class PurchaseOrder(Order):
|
|||||||
|
|
||||||
# Determine if we should individually serialize the items, or not
|
# Determine if we should individually serialize the items, or not
|
||||||
if type(serials) is list and len(serials) > 0:
|
if type(serials) is list and len(serials) > 0:
|
||||||
quantity = 1
|
serialize = True
|
||||||
else:
|
else:
|
||||||
|
serialize = False
|
||||||
serials = [None]
|
serials = [None]
|
||||||
|
|
||||||
for sn in serials:
|
for sn in serials:
|
||||||
@ -450,7 +451,7 @@ class PurchaseOrder(Order):
|
|||||||
part=line.part.part,
|
part=line.part.part,
|
||||||
supplier_part=line.part,
|
supplier_part=line.part,
|
||||||
location=location,
|
location=location,
|
||||||
quantity=quantity,
|
quantity=1 if serialize else quantity,
|
||||||
purchase_order=self,
|
purchase_order=self,
|
||||||
status=status,
|
status=status,
|
||||||
batch=batch_code,
|
batch=batch_code,
|
||||||
|
@ -329,6 +329,7 @@ class POLineItemReceiveSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
class POReceiveSerializer(serializers.Serializer):
|
class POReceiveSerializer(serializers.Serializer):
|
||||||
"""
|
"""
|
||||||
Serializer for receiving items against a purchase order
|
Serializer for receiving items against a purchase order
|
||||||
|
@ -529,6 +529,108 @@ class PurchaseOrderReceiveTest(OrderTest):
|
|||||||
self.assertTrue(StockItem.objects.filter(uid='MY-UNIQUE-BARCODE-123').exists())
|
self.assertTrue(StockItem.objects.filter(uid='MY-UNIQUE-BARCODE-123').exists())
|
||||||
self.assertTrue(StockItem.objects.filter(uid='MY-UNIQUE-BARCODE-456').exists())
|
self.assertTrue(StockItem.objects.filter(uid='MY-UNIQUE-BARCODE-456').exists())
|
||||||
|
|
||||||
|
def test_batch_code(self):
|
||||||
|
"""
|
||||||
|
Test that we can supply a 'batch code' when receiving items
|
||||||
|
"""
|
||||||
|
|
||||||
|
line_1 = models.PurchaseOrderLineItem.objects.get(pk=1)
|
||||||
|
line_2 = models.PurchaseOrderLineItem.objects.get(pk=2)
|
||||||
|
|
||||||
|
self.assertEqual(StockItem.objects.filter(supplier_part=line_1.part).count(), 0)
|
||||||
|
self.assertEqual(StockItem.objects.filter(supplier_part=line_2.part).count(), 0)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'line_item': 1,
|
||||||
|
'quantity': 10,
|
||||||
|
'batch_code': 'abc-123',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'line_item': 2,
|
||||||
|
'quantity': 10,
|
||||||
|
'batch_code': 'xyz-789',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'location': 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
n = StockItem.objects.count()
|
||||||
|
|
||||||
|
self.post(
|
||||||
|
self.url,
|
||||||
|
data,
|
||||||
|
expected_code=201,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check that two new stock items have been created!
|
||||||
|
self.assertEqual(n + 2, StockItem.objects.count())
|
||||||
|
|
||||||
|
item_1 = StockItem.objects.filter(supplier_part=line_1.part).first()
|
||||||
|
item_2 = StockItem.objects.filter(supplier_part=line_2.part).first()
|
||||||
|
|
||||||
|
self.assertEqual(item_1.batch, 'abc-123')
|
||||||
|
self.assertEqual(item_2.batch, 'xyz-789')
|
||||||
|
|
||||||
|
def test_serial_numbers(self):
|
||||||
|
"""
|
||||||
|
Test that we can supply a 'serial number' when receiving items
|
||||||
|
"""
|
||||||
|
|
||||||
|
line_1 = models.PurchaseOrderLineItem.objects.get(pk=1)
|
||||||
|
line_2 = models.PurchaseOrderLineItem.objects.get(pk=2)
|
||||||
|
|
||||||
|
self.assertEqual(StockItem.objects.filter(supplier_part=line_1.part).count(), 0)
|
||||||
|
self.assertEqual(StockItem.objects.filter(supplier_part=line_2.part).count(), 0)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'line_item': 1,
|
||||||
|
'quantity': 10,
|
||||||
|
'batch_code': 'abc-123',
|
||||||
|
'serial_numbers': '100+',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'line_item': 2,
|
||||||
|
'quantity': 10,
|
||||||
|
'batch_code': 'xyz-789',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'location': 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
n = StockItem.objects.count()
|
||||||
|
|
||||||
|
self.post(
|
||||||
|
self.url,
|
||||||
|
data,
|
||||||
|
expected_code=201,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check that the expected number of stock items has been created
|
||||||
|
self.assertEqual(n + 11, StockItem.objects.count())
|
||||||
|
|
||||||
|
# 10 serialized stock items created for the first line item
|
||||||
|
self.assertEqual(StockItem.objects.filter(supplier_part=line_1.part).count(), 10)
|
||||||
|
|
||||||
|
# Check that the correct serial numbers have been allocated
|
||||||
|
for i in range(100, 110):
|
||||||
|
item = StockItem.objects.get(serial_int=i)
|
||||||
|
self.assertEqual(item.serial, str(i))
|
||||||
|
self.assertEqual(item.quantity, 1)
|
||||||
|
self.assertEqual(item.batch, 'abc-123')
|
||||||
|
|
||||||
|
# A single stock item (quantity 10) created for the second line item
|
||||||
|
items = StockItem.objects.filter(supplier_part=line_2.part)
|
||||||
|
self.assertEqual(items.count(), 1)
|
||||||
|
|
||||||
|
item = items.first()
|
||||||
|
|
||||||
|
self.assertEqual(item.quantity, 10)
|
||||||
|
self.assertEqual(item.batch, 'xyz-789')
|
||||||
|
|
||||||
|
|
||||||
class SalesOrderTest(OrderTest):
|
class SalesOrderTest(OrderTest):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user