mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-15 19:45:46 +00:00
Add some unit tests
- Saving a model automatically updates the reference_int field - Data migrations are correctly applied
This commit is contained in:
@ -9,12 +9,8 @@ def build_refs(apps, schema_editor):
|
||||
Rebuild the integer "reference fields" for existing Build objects
|
||||
"""
|
||||
|
||||
print("\n - Rebuilding reference field for PurchaseOrder model...")
|
||||
|
||||
PurchaseOrder = apps.get_model('order', 'purchaseorder')
|
||||
|
||||
n = PurchaseOrder.objects.count()
|
||||
|
||||
for order in PurchaseOrder.objects.all():
|
||||
|
||||
ref = 0
|
||||
@ -30,13 +26,8 @@ def build_refs(apps, schema_editor):
|
||||
order.reference_int = ref
|
||||
order.save()
|
||||
|
||||
print(f" - Updated {n} PurchaseOrder objects")
|
||||
print("\n - Rebuilding reference field for SalesOrder model...")
|
||||
|
||||
SalesOrder = apps.get_model('order', 'salesorder')
|
||||
|
||||
n = SalesOrder.objects.count()
|
||||
|
||||
for order in SalesOrder.objects.all():
|
||||
|
||||
ref = 0
|
||||
@ -52,9 +43,6 @@ def build_refs(apps, schema_editor):
|
||||
order.reference_int = ref
|
||||
order.save()
|
||||
|
||||
print(f" - Updated {n} SalesOrder objects")
|
||||
print(f" - COMPLETE! -")
|
||||
|
||||
|
||||
def unbuild_refs(apps, schema_editor):
|
||||
"""
|
||||
|
59
InvenTree/order/test_migrations.py
Normal file
59
InvenTree/order/test_migrations.py
Normal file
@ -0,0 +1,59 @@
|
||||
"""
|
||||
Unit tests for the 'order' model data migrations
|
||||
"""
|
||||
|
||||
from django_test_migrations.contrib.unittest_case import MigratorTestCase
|
||||
|
||||
from InvenTree import helpers
|
||||
|
||||
|
||||
class TestForwardMigrations(MigratorTestCase):
|
||||
"""
|
||||
Test entire schema migration
|
||||
"""
|
||||
|
||||
migrate_from = ('order', helpers.getOldestMigrationFile('order'))
|
||||
migrate_to = ('order', helpers.getNewestMigrationFile('order'))
|
||||
|
||||
def prepare(self):
|
||||
"""
|
||||
Create initial data set
|
||||
"""
|
||||
|
||||
# Create a purchase order from a supplier
|
||||
Company = self.old_state.apps.get_model('company', 'company')
|
||||
|
||||
supplier = Company.objects.create(
|
||||
name='Supplier A',
|
||||
description='A great supplier!',
|
||||
is_supplier=True
|
||||
)
|
||||
|
||||
PurchaseOrder = self.old_state.apps.get_model('order', 'purchaseorder')
|
||||
|
||||
# Create some orders
|
||||
for ii in range(10):
|
||||
|
||||
order = PurchaseOrder.objects.create(
|
||||
supplier=supplier,
|
||||
reference=f"{ii}-abcde",
|
||||
description="Just a test order"
|
||||
)
|
||||
|
||||
# Initially, the 'reference_int' field is unavailable
|
||||
with self.assertRaises(AttributeError):
|
||||
print(order.reference_int)
|
||||
|
||||
def test_ref_field(self):
|
||||
"""
|
||||
Test that the 'reference_int' field has been created and is filled out correctly
|
||||
"""
|
||||
|
||||
PurchaseOrder = self.new_state.apps.get_model('order', 'purchaseorder')
|
||||
|
||||
for ii in range(10):
|
||||
|
||||
order = PurchaseOrder.objects.get(reference=f"{ii}-abcde")
|
||||
|
||||
# The integer reference field must have been correctly updated
|
||||
self.assertEqual(order.reference_int, ii)
|
Reference in New Issue
Block a user