Commit ec13ba43 by Mushtaq Ali

Fix when checking in mongo store, `has_course` with a split course key returns False.

parent 2dc4f5d6
...@@ -182,6 +182,23 @@ class TestForcePublish(MaintenanceViewTestCase): ...@@ -182,6 +182,23 @@ class TestForcePublish(MaintenanceViewTestCase):
error_message='Force publishing course is not supported with old mongo courses.' error_message='Force publishing course is not supported with old mongo courses.'
) )
def test_mongo_course_with_split_course_key(self):
"""
Test that we get an error message `course_key_not_found` for a provided split course key
if we already have an old mongo course.
"""
# validate non split error message
course = CourseFactory.create(org='e', number='d', run='X', default_store=ModuleStoreEnum.Type.mongo)
self.verify_error_message(
data={'course-id': unicode(course.id)},
error_message='Force publishing course is not supported with old mongo courses.'
)
# Now search for the course key in split version.
self.verify_error_message(
data={'course-id': 'course-v1:e+d+X'},
error_message=COURSE_KEY_ERROR_MESSAGES['course_key_not_found']
)
def test_already_published(self): def test_already_published(self):
""" """
Test that when a course is forcefully publish, we get a 'course is already published' message. Test that when a course is forcefully publish, we get a 'course is already published' message.
......
...@@ -1118,6 +1118,11 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo ...@@ -1118,6 +1118,11 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo
otherwise, do a case sensitive search otherwise, do a case sensitive search
""" """
assert isinstance(course_key, CourseKey) assert isinstance(course_key, CourseKey)
if not course_key.deprecated: # split course_key
# The supplied CourseKey is of the wrong type, so it can't possibly be stored in this modulestore.
return False
if isinstance(course_key, LibraryLocator): if isinstance(course_key, LibraryLocator):
return None # Libraries require split mongo return None # Libraries require split mongo
course_key = self.fill_in_run(course_key) course_key = self.fill_in_run(course_key)
......
...@@ -300,6 +300,14 @@ class TestMongoModuleStore(TestMongoModuleStoreBase): ...@@ -300,6 +300,14 @@ class TestMongoModuleStore(TestMongoModuleStoreBase):
with self.assertRaises(ItemNotFoundError): with self.assertRaises(ItemNotFoundError):
self.draft_store.get_course(course_key) self.draft_store.get_course(course_key)
def test_has_mongo_course_with_split_course_key(self):
"""
Test `has course` using split course key would return False.
"""
course_key = CourseKey.from_string('course-v1:edX+simple+2012_Fall')
self.assertFalse(self.draft_store.has_course(course_key))
def test_has_course_with_library(self): def test_has_course_with_library(self):
""" """
Test that has_course() returns False when called with a LibraryLocator. Test that has_course() returns False when called with a LibraryLocator.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment