InvenTree/InvenTree/part/test_bom_item.py
2019-05-05 00:00:30 +10:00

55 lines
1.5 KiB
Python

from django.test import TestCase
import django.core.exceptions as django_exceptions
from .models import Part, BomItem
class BomItemTest(TestCase):
fixtures = [
'category',
'part',
'location',
'bom',
]
def setUp(self):
self.bob = Part.objects.get(id=100)
self.orphan = Part.objects.get(name='Orphan')
def test_str(self):
b = BomItem.objects.get(id=1)
self.assertEqual(str(b), '10 x M2x4 LPHS to make Bob')
def test_has_bom(self):
self.assertFalse(self.orphan.has_bom)
self.assertTrue(self.bob.has_bom)
self.assertEqual(self.bob.bom_count, 4)
def test_in_bom(self):
parts = self.bob.required_parts()
self.assertIn(self.orphan, parts)
def test_bom_export(self):
parts = self.bob.required_parts()
data = self.bob.export_bom(format='csv')
for p in parts:
self.assertIn(p.name, data)
self.assertIn(p.description, data)
def test_used_in(self):
self.assertEqual(self.bob.used_in_count, 0)
self.assertEqual(self.orphan.used_in_count, 1)
def test_self_reference(self):
""" Test that we get an appropriate error when we create a BomItem which points to itself """
with self.assertRaises(django_exceptions.ValidationError):
# A validation error should be raised here
item = BomItem.objects.create(part=self.bob, sub_part=self.bob, quantity=7)
item.clean()