'Creates and returns a tree with the following structure:
Grandparent
Parent Sibling
Parent
Child
Child Sibling'

def _create_test_tree(self, name, user_id=None):

    if (user_id is None):
        user_id = self.dummy_user
    org = 'edX'
    course = 'tree{}'.format(name)
    run = name
    if (not self.draft_store.has_course(CourseKey.from_string('/'.join[(org, course, run)]))):
        self.draft_store.create_course(org, course, run, user_id)
        locations = {'grandparent': Location(org, course, run, 'chapter', 'grandparent'), 'parent_sibling': Location(org, course, run, 'sequential', 'parent_sibling'), 'parent': Location(org, course, run, 'sequential', 'parent'), 'child_sibling': Location(org, course, run, 'vertical', 'child_sibling'), 'child': Location(org, course, run, 'vertical', 'child')}
        for key in locations:
            self.draft_store.create_item(user_id, locations[key].course_key, locations[key].block_type, block_id=locations[key].block_id)
        grandparent = self.draft_store.get_item(locations['grandparent'])
        grandparent.children += [locations['parent_sibling'], locations['parent']]
        self.draft_store.update_item(grandparent, user_id=user_id)
        parent = self.draft_store.get_item(locations['parent'])
        parent.children += [locations['child_sibling'], locations['child']]
        self.draft_store.update_item(parent, user_id=user_id)
        self.draft_store.publish(locations['parent'], user_id)
        self.draft_store.publish(locations['parent_sibling'], user_id)
    return locations
