2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-01 11:10:54 +00:00

Unit test speed improvements (#4463)

* Unit test speed improvements

- Move from insantiating data in setUp to setUpTestData

* Update UserMixin class for API testing

* Bunch of test updates

* Further test updates

* Test fixes

* Add allowances for exchange rate server not responding

* Fixes for group role test
This commit is contained in:
Oliver
2023-03-08 15:22:08 +11:00
committed by GitHub
parent 9c594ed52b
commit 2dfea9b825
20 changed files with 258 additions and 180 deletions

View File

@ -1408,25 +1408,33 @@ class SalesOrderLineItemTest(OrderTest):
LIST_URL = reverse('api-so-line-list')
def setUp(self):
@classmethod
def setUpTestData(cls):
"""Init routine for this unit test class"""
super().setUp()
super().setUpTestData()
# List of salable parts
parts = Part.objects.filter(salable=True)
lines = []
# Create a bunch of SalesOrderLineItems for each order
for idx, so in enumerate(models.SalesOrder.objects.all()):
for part in parts:
models.SalesOrderLineItem.objects.create(
order=so,
part=part,
quantity=(idx + 1) * 5,
reference=f"Order {so.reference} - line {idx}",
lines.append(
models.SalesOrderLineItem(
order=so,
part=part,
quantity=(idx + 1) * 5,
reference=f"Order {so.reference} - line {idx}",
)
)
self.url = reverse('api-so-line-list')
# Bulk create
models.SalesOrderLineItem.objects.bulk_create(lines)
cls.url = reverse('api-so-line-list')
def test_so_line_list(self):
"""Test list endpoint"""

View File

@ -25,33 +25,34 @@ class SalesOrderTest(TestCase):
'users',
]
def setUp(self):
@classmethod
def setUpTestData(cls):
"""Initial setup for this set of unit tests"""
# Create a Company to ship the goods to
self.customer = Company.objects.create(name="ABC Co", description="My customer", is_customer=True)
cls.customer = Company.objects.create(name="ABC Co", description="My customer", is_customer=True)
# Create a Part to ship
self.part = Part.objects.create(name='Spanner', salable=True, description='A spanner that I sell')
cls.part = Part.objects.create(name='Spanner', salable=True, description='A spanner that I sell')
# Create some stock!
self.Sa = StockItem.objects.create(part=self.part, quantity=100)
self.Sb = StockItem.objects.create(part=self.part, quantity=200)
cls.Sa = StockItem.objects.create(part=cls.part, quantity=100)
cls.Sb = StockItem.objects.create(part=cls.part, quantity=200)
# Create a SalesOrder to ship against
self.order = SalesOrder.objects.create(
customer=self.customer,
cls.order = SalesOrder.objects.create(
customer=cls.customer,
reference='SO-1234',
customer_reference='ABC 55555'
)
# Create a Shipment against this SalesOrder
self.shipment = SalesOrderShipment.objects.create(
order=self.order,
cls.shipment = SalesOrderShipment.objects.create(
order=cls.order,
reference='SO-001',
)
# Create a line item
self.line = SalesOrderLineItem.objects.create(quantity=50, order=self.order, part=self.part)
cls.line = SalesOrderLineItem.objects.create(quantity=50, order=cls.order, part=cls.part)
def test_so_reference(self):
"""Unit tests for sales order generation"""