import unittest, webnotes # TODO - rewrite this in Item Group # class TestNSM(unittest.TestCase): # def setUp(self): # webnotes.conn.sql("""delete from `tabItem Group` # where (name like 'c%') or (name like 'gc%')""") # # # self.data = [ # ["All Item Groups", None, 1, 20], # ["c0", "All Item Groups", 2, 3], # ["c1", "All Item Groups", 4, 11], # ["gc1", "c1", 5, 6], # ["gc2", "c1", 7, 8], # ["gc3", "c1", 9, 10], # ["c2", "All Item Groups", 12, 17], # ["gc4", "c2", 13, 14], # ["gc5", "c2", 15, 16], # ["c3", "All Item Groups", 18, 19] # ] # # for d in self.data: # b = webnotes.bean([{ # "doctype": "Item Group", "item_group_name": d[0], "parent_item_group": d[1], # "__islocal": 1, "is_group": "Yes" # }]) # b.insert() # self.__dict__[d[0]] = b # # # self.reload_all() # # def reload_all(self, data=None): # for d in data or self.data: # self.__dict__[d[0]].load_from_db() # # def test_basic_tree(self, data=None): # for d in data or self.data: # self.assertEquals(self.__dict__[d[0]].doc.lft, d[2]) # self.assertEquals(self.__dict__[d[0]].doc.rgt, d[3]) # # def test_validate_loop_move(self): # self.c1.doc.parent_item_group = 'gc3' # self.assertRaises(webnotes.ValidationError, self.c1.save) # # def test_rebuild_tree(self): # from webnotes.utils.nestedset import rebuild_tree # rebuild_tree("Item Group", "parent_item_group") # self.test_basic_tree(self.data) # # def test_move_group(self): # self.c1.doc.parent_item_group = 'c2' # self.c1.save() # self.reload_all() # # new_tree = [ # ["All Item Groups", None, 1, 20], # ["c0", "All Item Groups", 2, 3], # ["c2", "All Item Groups", 4, 17], # ["gc4", "c2", 5, 6], # ["gc5", "c2", 7, 8], # ["c1", "All Item Groups", 9, 16], # ["gc1", "c1", 10, 11], # ["gc2", "c1", 12, 13], # ["gc3", "c1", 14, 15], # ["c3", "All Item Groups", 18, 19] # ] # self.test_basic_tree(new_tree) # # # Move back # # self.c1.doc.parent_item_group = 'gc4' # self.c1.save() # self.reload_all() # # new_tree = [ # ["All Item Groups", None, 1, 20], # ["c0", "All Item Groups", 2, 3], # ["c2", "All Item Groups", 4, 17], # ["gc4", "c2", 5, 14], # ["c1", "All Item Groups", 6, 13], # ["gc1", "c1", 7, 8], # ["gc2", "c1", 9, 10], # ["gc3", "c1", 11, 12], # ["gc5", "c2", 15, 16], # ["c3", "All Item Groups", 18, 19] # ] # self.test_basic_tree(new_tree) # # # Move to root # # # self.c1.doc.parent_item_group = '' # # self.c1.save() # # self.reload_all() # # # # new_tree = [ # # ["All Item Groups", None, 1, 12], # # ["c0", "All Item Groups", 2, 3], # # ["c2", "All Item Groups", 4, 9], # # ["gc4", "c2", 5, 6], # # ["gc5", "c2", 7, 8], # # ["c3", "All Item Groups", 10, 11], # # ["c1", "All Item Groups", 13, 20], # # ["gc1", "c1", 14, 15], # # ["gc2", "c1", 16, 17], # # ["gc3", "c1", 18, 19], # # ] # # self.test_basic_tree(new_tree) # # # move leaf # self.gc3.doc.parent_item_group = 'c2' # self.gc3.save() # self.reload_all() # # new_tree = [ # ["All Item Groups", None, 1, 20], # ["c0", "All Item Groups", 2, 3], # ["c2", "All Item Groups", 4, 17], # ["gc4", "c2", 5, 12], # ["c1", "All Item Groups", 6, 11], # ["gc1", "c1", 7, 8], # ["gc2", "c1", 9, 10], # ["gc5", "c2", 13, 14], # ["gc3", "c2", 15, 16], # ["c3", "All Item Groups", 18, 19] # ] # self.test_basic_tree(new_tree) # # # delete leaf # from webnotes.model import delete_doc # delete_doc(self.gc2.doc.doctype, self.gc2.doc.name) # # new_tree = [ # ["All Item Groups", None, 1, 18], # ["c0", "All Item Groups", 2, 3], # ["c2", "All Item Groups", 4, 15], # ["gc4", "c2", 5, 10], # ["c1", "All Item Groups", 6, 9], # ["gc1", "c1", 7, 8], # ["gc5", "c2", 11, 12], # ["gc3", "c2", 13, 14], # ["c3", "All Item Groups", 16, 17] # ] # # del self.__dict__["gc2"] # self.reload_all(new_tree) # self.test_basic_tree(new_tree) # # if __name__=="__main__": # import webnotes # webnotes.connect() # unittest.main()