'Duplicate the children then reassign them to the new parent (1st method).'

def test_duplicate_children_01(self):

    new_cat1 = self.cat1.copy()
    new_cat2 = self.cat2.copy()
    new_cat0 = self.cat0.copy({'child_ids': []})
    (new_cat1 + new_cat2).write({'parent_id': new_cat0.id})
    new_struct = new_cat0.search([('parent_id', 'child_of', new_cat0.id)])
    self.assertEqual(len(new_struct), 4, 'After    duplication,    the    new    object    must    have    the    childs    records')
    old_struct = new_cat0.search([('parent_id', 'child_of', self.cat0.id)])
    self.assertEqual(len(old_struct), 4, 'After    duplication,    previous    record    must    have    old    childs    records    only')
    self.assertFalse((new_struct & old_struct), 'After    duplication,    nodes    should    not    be    mixed')
