mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +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:
		| @@ -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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user