mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Fixed tests
- Tree classes now need extra configuration in the fixture - Check for null pk when cleaning a tree node
This commit is contained in:
parent
a5189b8f3f
commit
dac61eafa2
@ -82,7 +82,7 @@ class InvenTreeTree(MPTTModel):
|
|||||||
@property
|
@property
|
||||||
def has_children(self):
|
def has_children(self):
|
||||||
""" True if there are any children under this item """
|
""" True if there are any children under this item """
|
||||||
return self.getUniqueChildren().count() > 0
|
return self.getUniqueChildren(include_self=False).count() > 0
|
||||||
|
|
||||||
def getAcceptableParents(self):
|
def getAcceptableParents(self):
|
||||||
""" Returns a list of acceptable parent items within this model
|
""" Returns a list of acceptable parent items within this model
|
||||||
@ -157,7 +157,7 @@ class InvenTreeTree(MPTTModel):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# Ensure that the new parent is not already a child
|
# Ensure that the new parent is not already a child
|
||||||
if self.id in self.getUniqueChildren(include_self=False):
|
if self.pk is not None and self.id in self.getUniqueChildren(include_self=False):
|
||||||
raise ValidationError("Category cannot set a child as parent")
|
raise ValidationError("Category cannot set a child as parent")
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -6,7 +6,11 @@
|
|||||||
name: Electronics
|
name: Electronics
|
||||||
description: Electronic components
|
description: Electronic components
|
||||||
parent: null
|
parent: null
|
||||||
default_location: 1 # Home
|
default_location: 1
|
||||||
|
level: 0
|
||||||
|
tree_id: 1
|
||||||
|
lft: 1
|
||||||
|
rght: 12
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 2
|
pk: 2
|
||||||
@ -15,6 +19,10 @@
|
|||||||
description: Resistors
|
description: Resistors
|
||||||
parent: 1
|
parent: 1
|
||||||
default_location: null
|
default_location: null
|
||||||
|
level: 1
|
||||||
|
tree_id: 1
|
||||||
|
lft: 2
|
||||||
|
rght: 3
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 3
|
pk: 3
|
||||||
@ -23,6 +31,10 @@
|
|||||||
description: Capacitors
|
description: Capacitors
|
||||||
parent: 1
|
parent: 1
|
||||||
default_location: null
|
default_location: null
|
||||||
|
level: 1
|
||||||
|
tree_id: 1
|
||||||
|
lft: 4
|
||||||
|
rght: 5
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 4
|
pk: 4
|
||||||
@ -31,6 +43,10 @@
|
|||||||
description: Integrated Circuits
|
description: Integrated Circuits
|
||||||
parent: 1
|
parent: 1
|
||||||
default_location: null
|
default_location: null
|
||||||
|
level: 1
|
||||||
|
tree_id: 1
|
||||||
|
lft: 6
|
||||||
|
rght: 11
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 5
|
pk: 5
|
||||||
@ -39,6 +55,10 @@
|
|||||||
description: Microcontrollers
|
description: Microcontrollers
|
||||||
parent: 4
|
parent: 4
|
||||||
default_location: null
|
default_location: null
|
||||||
|
level: 2
|
||||||
|
tree_id: 1
|
||||||
|
lft: 7
|
||||||
|
rght: 8
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 6
|
pk: 6
|
||||||
@ -47,6 +67,10 @@
|
|||||||
description: Communication interfaces
|
description: Communication interfaces
|
||||||
parent: 4
|
parent: 4
|
||||||
default_location: null
|
default_location: null
|
||||||
|
level: 2
|
||||||
|
tree_id: 1
|
||||||
|
lft: 9
|
||||||
|
rght: 10
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 7
|
pk: 7
|
||||||
@ -54,6 +78,10 @@
|
|||||||
name: Mechanical
|
name: Mechanical
|
||||||
description: Mechanical componenets
|
description: Mechanical componenets
|
||||||
default_location: null
|
default_location: null
|
||||||
|
level: 0
|
||||||
|
tree_id: 2
|
||||||
|
lft: 1
|
||||||
|
rght: 4
|
||||||
|
|
||||||
- model: part.partcategory
|
- model: part.partcategory
|
||||||
pk: 8
|
pk: 8
|
||||||
@ -62,3 +90,7 @@
|
|||||||
description: Screws, bolts, etc
|
description: Screws, bolts, etc
|
||||||
parent: 7
|
parent: 7
|
||||||
default_location: 5
|
default_location: 5
|
||||||
|
level: 1
|
||||||
|
tree_id: 2
|
||||||
|
lft: 2
|
||||||
|
rght: 3
|
||||||
|
@ -385,7 +385,7 @@ class Part(models.Model):
|
|||||||
cats = self.category.get_ancestors(ascending=True, include_self=True)
|
cats = self.category.get_ancestors(ascending=True, include_self=True)
|
||||||
|
|
||||||
for cat in cats:
|
for cat in cats:
|
||||||
if cat.defaul_location:
|
if cat.default_location:
|
||||||
return cat.default_location
|
return cat.default_location
|
||||||
|
|
||||||
# Default case - no default category found
|
# Default case - no default category found
|
||||||
|
@ -48,7 +48,7 @@ class CategoryTest(TestCase):
|
|||||||
def test_unique_childs(self):
|
def test_unique_childs(self):
|
||||||
""" Test the 'unique_children' functionality """
|
""" Test the 'unique_children' functionality """
|
||||||
|
|
||||||
childs = self.electronics.getUniqueChildren()
|
childs = [item.pk for item in self.electronics.getUniqueChildren()]
|
||||||
|
|
||||||
self.assertIn(self.transceivers.id, childs)
|
self.assertIn(self.transceivers.id, childs)
|
||||||
self.assertIn(self.ic.id, childs)
|
self.assertIn(self.ic.id, childs)
|
||||||
@ -58,7 +58,7 @@ class CategoryTest(TestCase):
|
|||||||
def test_unique_parents(self):
|
def test_unique_parents(self):
|
||||||
""" Test the 'unique_parents' functionality """
|
""" Test the 'unique_parents' functionality """
|
||||||
|
|
||||||
parents = self.transceivers.getUniqueParents()
|
parents = [item.pk for item in self.transceivers.getUniqueParents()]
|
||||||
|
|
||||||
self.assertIn(self.electronics.id, parents)
|
self.assertIn(self.electronics.id, parents)
|
||||||
self.assertIn(self.ic.id, parents)
|
self.assertIn(self.ic.id, parents)
|
||||||
|
@ -5,6 +5,10 @@
|
|||||||
fields:
|
fields:
|
||||||
name: 'Home'
|
name: 'Home'
|
||||||
description: 'My house'
|
description: 'My house'
|
||||||
|
level: 0
|
||||||
|
tree_id: 1
|
||||||
|
lft: 1
|
||||||
|
rght: 6
|
||||||
|
|
||||||
- model: stock.stocklocation
|
- model: stock.stocklocation
|
||||||
pk: 2
|
pk: 2
|
||||||
@ -12,6 +16,10 @@
|
|||||||
name: 'Bathroom'
|
name: 'Bathroom'
|
||||||
description: 'Where I keep my bath'
|
description: 'Where I keep my bath'
|
||||||
parent: 1
|
parent: 1
|
||||||
|
level: 1
|
||||||
|
tree_id: 1
|
||||||
|
lft: 2
|
||||||
|
rght: 3
|
||||||
|
|
||||||
- model: stock.stocklocation
|
- model: stock.stocklocation
|
||||||
pk: 3
|
pk: 3
|
||||||
@ -19,12 +27,20 @@
|
|||||||
name: 'Dining Room'
|
name: 'Dining Room'
|
||||||
description: 'A table lives here'
|
description: 'A table lives here'
|
||||||
parent: 1
|
parent: 1
|
||||||
|
level: 0
|
||||||
|
tree_id: 1
|
||||||
|
lft: 4
|
||||||
|
rght: 5
|
||||||
|
|
||||||
- model: stock.stocklocation
|
- model: stock.stocklocation
|
||||||
pk: 4
|
pk: 4
|
||||||
fields:
|
fields:
|
||||||
name: 'Office'
|
name: 'Office'
|
||||||
description: 'Place of work'
|
description: 'Place of work'
|
||||||
|
level: 0
|
||||||
|
tree_id: 2
|
||||||
|
lft: 1
|
||||||
|
rght: 8
|
||||||
|
|
||||||
- model: stock.stocklocation
|
- model: stock.stocklocation
|
||||||
pk: 5
|
pk: 5
|
||||||
@ -32,6 +48,10 @@
|
|||||||
name: 'Drawer_1'
|
name: 'Drawer_1'
|
||||||
description: 'In my desk'
|
description: 'In my desk'
|
||||||
parent: 4
|
parent: 4
|
||||||
|
level: 0
|
||||||
|
tree_id: 2
|
||||||
|
lft: 2
|
||||||
|
rght: 3
|
||||||
|
|
||||||
- model: stock.stocklocation
|
- model: stock.stocklocation
|
||||||
pk: 6
|
pk: 6
|
||||||
@ -39,6 +59,10 @@
|
|||||||
name: 'Drawer_2'
|
name: 'Drawer_2'
|
||||||
description: 'Also in my desk'
|
description: 'Also in my desk'
|
||||||
parent: 4
|
parent: 4
|
||||||
|
level: 0
|
||||||
|
tree_id: 2
|
||||||
|
lft: 4
|
||||||
|
rght: 5
|
||||||
|
|
||||||
- model: stock.stocklocation
|
- model: stock.stocklocation
|
||||||
pk: 7
|
pk: 7
|
||||||
@ -46,3 +70,7 @@
|
|||||||
name: 'Drawer_3'
|
name: 'Drawer_3'
|
||||||
description: 'Again, in my desk'
|
description: 'Again, in my desk'
|
||||||
parent: 4
|
parent: 4
|
||||||
|
level: 0
|
||||||
|
tree_id: 2
|
||||||
|
lft: 6
|
||||||
|
rght: 7
|
@ -67,15 +67,18 @@ class StockTest(TestCase):
|
|||||||
|
|
||||||
# Move one of the drawers
|
# Move one of the drawers
|
||||||
self.drawer3.parent = self.home
|
self.drawer3.parent = self.home
|
||||||
|
self.drawer3.save()
|
||||||
|
|
||||||
self.assertNotEqual(self.drawer3.parent, self.office)
|
self.assertNotEqual(self.drawer3.parent, self.office)
|
||||||
|
|
||||||
self.assertEqual(self.drawer3.pathstring, 'Home/Drawer_3')
|
self.assertEqual(self.drawer3.pathstring, 'Home/Drawer_3')
|
||||||
|
|
||||||
def test_children(self):
|
def test_children(self):
|
||||||
self.assertTrue(self.office.has_children)
|
self.assertTrue(self.office.has_children)
|
||||||
|
|
||||||
self.assertFalse(self.drawer2.has_children)
|
self.assertFalse(self.drawer2.has_children)
|
||||||
|
|
||||||
childs = self.office.getUniqueChildren()
|
childs = [item.pk for item in self.office.getUniqueChildren()]
|
||||||
|
|
||||||
self.assertIn(self.drawer1.id, childs)
|
self.assertIn(self.drawer1.id, childs)
|
||||||
self.assertIn(self.drawer2.id, childs)
|
self.assertIn(self.drawer2.id, childs)
|
||||||
|
Loading…
Reference in New Issue
Block a user