def test_multi_inter_obj(self):
        key_vals = {'fake_key': 'fake_val'}
        obj_dict = {'obj_id': key_vals}
        test_dict = {
            'fake_ref_0': obj_dict,
            'fake_ref_1': obj_dict,
            'fake_ref_2': obj_dict
        }

        node_list = []
        for i in range(0, 3):
            temp_inter = InterNode('fake_path_{}'.format(i))
            temp_obj = ObjNode('obj_id', **key_vals)

            _patch_ne(temp_obj)
            _patch_ne(temp_inter)

            temp_obj.addParent(temp_inter)
            temp_inter.addChild(temp_obj)
            node_list.append(temp_inter)

        self.helper_mock.return_value = {
            'fake_ref_0': 'fake_path_0',
            'fake_ref_1': 'fake_path_1',
            'fake_ref_2': 'fake_path_2'
        }

        cut_tree = obj_tree._dfs_cut(test_dict, InterNode('fake_ref_0'))
        _init_patch(cut_tree)

        self.assertObjEquals(node_list, cut_tree)
    def test_obj_obj(self):
        key_vals = {'fake_key': 'fake_val'}
        test_dict = {'obj_id': {'obj_id_2': key_vals}}

        test_obj = ObjNode('obj_id')
        test_obj_2 = ObjNode('obj_id_2', **key_vals)
        _patch_ne(test_obj)
        _patch_ne(test_obj_2)

        test_obj_2.addParent(test_obj)
        test_obj.addChild(test_obj_2)

        cut_tree = obj_tree._dfs_cut(test_dict)
        _init_patch(cut_tree)

        self.assertObjEquals([test_obj], cut_tree)
    def test_inter_obj(self):
        key_vals = {'fake_key': 'fake_val'}
        test_dict = {'fake_ref': {'obj_id': key_vals}}

        test_obj = ObjNode('obj_id', **key_vals)
        test_inter = InterNode('fake_path')
        _patch_ne(test_obj)
        _patch_ne(test_inter)

        test_obj.addParent(test_inter)
        test_inter.addChild(test_obj)

        self.helper_mock.return_value = {'fake_ref': 'fake_path'}

        # test_inter is passed here to take the place of the root node
        cut_tree = obj_tree._dfs_cut(test_dict, test_inter)
        _init_patch(cut_tree)

        self.assertObjEquals([test_inter], cut_tree)
    def test_inter_multi_obj(self):
        key_vals = {'fake_key': 'fake_val'}
        test_dict = {
            'fake_ref': {
                'obj_id_0': key_vals,
                'obj_id_1': key_vals,
                'obj_id_2': key_vals
            }
        }

        test_inter = InterNode('fake_path')
        _patch_ne(test_inter)
        for i in range(0, 3):
            temp_obj = ObjNode('obj_id_{}'.format(i), **key_vals)
            _patch_ne(temp_obj)
            temp_obj.addParent(test_inter)
            test_inter.addChild(temp_obj)

        self.helper_mock.return_value = {'fake_ref': 'fake_path'}

        cut_tree = obj_tree._dfs_cut(test_dict, test_inter)
        _init_patch(cut_tree)

        self.assertObjEquals([test_inter], cut_tree)