def mapper(found_id): """ Convert the found id to Location block_id """ locator = BlockUsageLocator.make_relative( from_base_addr, found_id) return loc_mapper().translate_locator_to_location(locator).name
def test_relative(self): """ Test making a relative usage locator. """ package_id = 'mit.eecs-1' branch = 'foo' baseobj = CourseLocator(package_id=package_id, branch=branch) block_id = 'problem:with-colon~2' testobj = BlockUsageLocator.make_relative(baseobj, block_id) self.check_block_locn_fields( testobj, 'Cannot make relative to course', package_id=package_id, branch=branch, block=block_id ) block_id = 'completely_different' testobj = BlockUsageLocator.make_relative(testobj, block_id) self.check_block_locn_fields( testobj, 'Cannot make relative to block usage', package_id=package_id, branch=branch, block=block_id )
def test_relative(self): """ Test making a relative usage locator. """ org = 'mit.eecs' offering = '1' branch = 'foo' baseobj = CourseLocator(org=org, offering=offering, branch=branch) block_id = 'problem:with-colon~2' testobj = BlockUsageLocator.make_relative(baseobj, 'problem', block_id) self.check_block_locn_fields( testobj, org=org, offering=offering, branch=branch, block=block_id ) block_id = 'completely_different' testobj = BlockUsageLocator.make_relative(testobj, 'problem', block_id) self.check_block_locn_fields( testobj, org=org, offering=offering, branch=branch, block=block_id )
def test_block_generations(self): """ Test get_block_generations """ test_course = persistent_factories.PersistentCourseFactory.create( offering='history.hist101', org='edu.harvard', display_name='history test course', user_id='testbot' ) chapter = persistent_factories.ItemFactory.create(display_name='chapter 1', parent_location=test_course.location, user_id='testbot') sub = persistent_factories.ItemFactory.create(display_name='subsection 1', parent_location=chapter.location, user_id='testbot', category='vertical') first_problem = persistent_factories.ItemFactory.create( display_name='problem 1', parent_location=sub.location, user_id='testbot', category='problem', data="<problem></problem>" ) first_problem.max_attempts = 3 first_problem.save() # decache the above into the kvs updated_problem = modulestore('split').update_item(first_problem, '**replace_user**') self.assertIsNotNone(updated_problem.previous_version) self.assertEqual(updated_problem.previous_version, first_problem.update_version) self.assertNotEqual(updated_problem.update_version, first_problem.update_version) updated_loc = modulestore('split').delete_item(updated_problem.location, 'testbot', delete_children=True) second_problem = persistent_factories.ItemFactory.create( display_name='problem 2', parent_location=BlockUsageLocator.make_relative( updated_loc, block_type='problem', block_id=sub.location.block_id ), user_id='testbot', category='problem', data="<problem></problem>" ) # course root only updated 2x version_history = modulestore('split').get_block_generations(test_course.location) self.assertEqual(version_history.locator.version_guid, test_course.location.version_guid) self.assertEqual(len(version_history.children), 1) self.assertEqual(version_history.children[0].children, []) self.assertEqual(version_history.children[0].locator.version_guid, chapter.location.version_guid) # sub changed on add, add problem, delete problem, add problem in strict linear seq version_history = modulestore('split').get_block_generations(sub.location) self.assertEqual(len(version_history.children), 1) self.assertEqual(len(version_history.children[0].children), 1) self.assertEqual(len(version_history.children[0].children[0].children), 1) self.assertEqual(len(version_history.children[0].children[0].children[0].children), 0) # first and second problem may show as same usage_id; so, need to ensure their histories are right version_history = modulestore('split').get_block_generations(updated_problem.location) self.assertEqual(version_history.locator.version_guid, first_problem.location.version_guid) self.assertEqual(len(version_history.children), 1) # updated max_attempts self.assertEqual(len(version_history.children[0].children), 0) version_history = modulestore('split').get_block_generations(second_problem.location) self.assertNotEqual(version_history.locator.version_guid, first_problem.location.version_guid)
def test_relative(self): """ Test making a relative usage locator. """ package_id = 'mit.eecs-1' branch = 'foo' baseobj = CourseLocator(package_id=package_id, branch=branch) block_id = 'problem:with-colon~2' testobj = BlockUsageLocator.make_relative(baseobj, block_id) self.check_block_locn_fields(testobj, 'Cannot make relative to course', package_id=package_id, branch=branch, block=block_id) block_id = 'completely_different' testobj = BlockUsageLocator.make_relative(testobj, block_id) self.check_block_locn_fields(testobj, 'Cannot make relative to block usage', package_id=package_id, branch=branch, block=block_id)
def mapper(found_id): """ Convert the found id to Location block_id """ locator = BlockUsageLocator.make_relative(from_base_addr, found_id) return loc_mapper().translate_locator_to_location(locator).name
def test_block_generations(self): """ Test get_block_generations """ test_course = persistent_factories.PersistentCourseFactory.create( offering='history.hist101', org='edu.harvard', display_name='history test course', user_id='testbot') chapter = persistent_factories.ItemFactory.create( display_name='chapter 1', parent_location=test_course.location, user_id='testbot') sub = persistent_factories.ItemFactory.create( display_name='subsection 1', parent_location=chapter.location, user_id='testbot', category='vertical') first_problem = persistent_factories.ItemFactory.create( display_name='problem 1', parent_location=sub.location, user_id='testbot', category='problem', data="<problem></problem>") first_problem.max_attempts = 3 first_problem.save() # decache the above into the kvs updated_problem = modulestore('split').update_item( first_problem, '**replace_user**') self.assertIsNotNone(updated_problem.previous_version) self.assertEqual(updated_problem.previous_version, first_problem.update_version) self.assertNotEqual(updated_problem.update_version, first_problem.update_version) updated_loc = modulestore('split').delete_item( updated_problem.location, 'testbot', delete_children=True) second_problem = persistent_factories.ItemFactory.create( display_name='problem 2', parent_location=BlockUsageLocator.make_relative( updated_loc, block_type='problem', block_id=sub.location.block_id), user_id='testbot', category='problem', data="<problem></problem>") # course root only updated 2x version_history = modulestore('split').get_block_generations( test_course.location) self.assertEqual(version_history.locator.version_guid, test_course.location.version_guid) self.assertEqual(len(version_history.children), 1) self.assertEqual(version_history.children[0].children, []) self.assertEqual(version_history.children[0].locator.version_guid, chapter.location.version_guid) # sub changed on add, add problem, delete problem, add problem in strict linear seq version_history = modulestore('split').get_block_generations( sub.location) self.assertEqual(len(version_history.children), 1) self.assertEqual(len(version_history.children[0].children), 1) self.assertEqual(len(version_history.children[0].children[0].children), 1) self.assertEqual( len(version_history.children[0].children[0].children[0].children), 0) # first and second problem may show as same usage_id; so, need to ensure their histories are right version_history = modulestore('split').get_block_generations( updated_problem.location) self.assertEqual(version_history.locator.version_guid, first_problem.location.version_guid) self.assertEqual(len(version_history.children), 1) # updated max_attempts self.assertEqual(len(version_history.children[0].children), 0) version_history = modulestore('split').get_block_generations( second_problem.location) self.assertNotEqual(version_history.locator.version_guid, first_problem.location.version_guid)