From 5cc86dae2b259efc9b60e2214beb02106b987def Mon Sep 17 00:00:00 2001 From: David Date: Sat, 12 Oct 2024 11:56:28 +0200 Subject: [PATCH] test: increase error context on test_item_group --- .../doctype/item_group/test_item_group.py | 86 ++++++++++--------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/erpnext/setup/doctype/item_group/test_item_group.py b/erpnext/setup/doctype/item_group/test_item_group.py index 13bcf74e3d0..0b47009fc81 100644 --- a/erpnext/setup/doctype/item_group/test_item_group.py +++ b/erpnext/setup/doctype/item_group/test_item_group.py @@ -36,37 +36,22 @@ class TestItem(IntegrationTestCase): parent_lft = min_lft - 1 parent_rgt = max_rgt + 1 - self.assertTrue(lft) - self.assertTrue(rgt) - self.assertTrue(lft < rgt) - self.assertTrue(parent_lft < parent_rgt) - self.assertTrue(lft > parent_lft) - self.assertTrue(rgt < parent_rgt) - self.assertTrue(lft >= min_lft) - self.assertTrue(rgt <= max_rgt) + self.assertTrue(lft, "has no lft") + self.assertTrue(rgt, "has no rgt") + self.assertTrue(lft < rgt, "lft >= rgt") + self.assertTrue(parent_lft < parent_rgt, "parent_lft >= parent_rgt") + self.assertTrue(lft > parent_lft, "lft <= parent_lft") + self.assertTrue(rgt < parent_rgt, "rgt >= parent_rgt") + self.assertTrue(lft >= min_lft, "lft < min_lft") + self.assertTrue(rgt <= max_rgt, "rgs > max_rgt") - no_of_children = self.get_no_of_children(item_group["item_group_name"]) - self.assertTrue(rgt == (lft + 1 + (2 * no_of_children))) + no_of_children = self._get_no_of_children(item_group["item_group_name"]) + self.assertTrue(rgt == (lft + 1 + (2 * no_of_children)), "rgt is not lft + 1 + (2 * #children)") - no_of_children = self.get_no_of_children(parent_item_group) - self.assertTrue(parent_rgt == (parent_lft + 1 + (2 * no_of_children))) - - def get_no_of_children(self, item_group): - def get_no_of_children(item_groups, no_of_children): - children = [] - for ig in item_groups: - children += frappe.db.sql_list( - """select name from `tabItem Group` - where ifnull(parent_item_group, '')=%s""", - ig or "", - ) - - if len(children): - return get_no_of_children(children, no_of_children + len(children)) - else: - return no_of_children - - return get_no_of_children([item_group], 0) + no_of_children = self._get_no_of_children(parent_item_group) + self.assertTrue( + parent_rgt == (parent_lft + 1 + (2 * no_of_children)), "parent_rgs is not 1 + (2 * #children)" + ) def test_recursion(self): group_b = frappe.get_doc("Item Group", "_Test Item Group B") @@ -81,12 +66,6 @@ class TestItem(IntegrationTestCase): rebuild_tree("Item Group") self.test_basic_tree() - def move_it_back(self): - group_b = frappe.get_doc("Item Group", "_Test Item Group B") - group_b.parent_item_group = "All Item Groups" - group_b.save() - self.test_basic_tree() - def test_move_group_into_another(self): # before move old_lft, old_rgt = frappe.db.get_value("Item Group", "_Test Item Group C", ["lft", "rgt"]) @@ -108,7 +87,7 @@ class TestItem(IntegrationTestCase): # adjacent siblings, hence rgt diff will be 0 self.assertEqual(new_rgt - old_rgt, 0) - self.move_it_back() + self._move_it_back() def test_move_group_into_root(self): group_b = frappe.get_doc("Item Group", "_Test Item Group B") @@ -118,12 +97,7 @@ class TestItem(IntegrationTestCase): # trick! works because it hasn't been rolled back :D self.test_basic_tree() - self.move_it_back() - - def print_tree(self): - import json - - print(json.dumps(frappe.db.sql("select name, lft, rgt from `tabItem Group` order by lft"), indent=1)) + self._move_it_back() def test_move_leaf_into_another_group(self): # before move @@ -233,3 +207,31 @@ class TestItem(IntegrationTestCase): "_Test Item Group B - 3", merge=True, ) + + def _move_it_back(self): + group_b = frappe.get_doc("Item Group", "_Test Item Group B") + group_b.parent_item_group = "All Item Groups" + group_b.save() + self.test_basic_tree() + + def _get_no_of_children(self, item_group): + def get_no_of_children(item_groups, no_of_children): + children = [] + for ig in item_groups: + children += frappe.db.sql_list( + """select name from `tabItem Group` + where ifnull(parent_item_group, '')=%s""", + ig or "", + ) + + if len(children): + return get_no_of_children(children, no_of_children + len(children)) + else: + return no_of_children + + return get_no_of_children([item_group], 0) + + def _print_tree(self): + import json + + print(json.dumps(frappe.db.sql("select name, lft, rgt from `tabItem Group` order by lft"), indent=1))