diff --git a/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py b/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py index 88551f3f7b..fdd5df6414 100644 --- a/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py +++ b/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py @@ -168,7 +168,8 @@ class BulkWriteRecord(object): return self.structures.get(self.index.get('versions', {}).get(branch)) def set_structure_for_branch(self, branch, structure): - self.index.get('versions', {})[branch] = structure['_id'] + if self.index is not None: + self.index.setdefault('versions', {})[branch] = structure['_id'] self.structures[structure['_id']] = structure def __repr__(self): diff --git a/common/lib/xmodule/xmodule/modulestore/tests/test_split_modulestore_bulk_operations.py b/common/lib/xmodule/xmodule/modulestore/tests/test_split_modulestore_bulk_operations.py index 8c75800f02..313fe988df 100644 --- a/common/lib/xmodule/xmodule/modulestore/tests/test_split_modulestore_bulk_operations.py +++ b/common/lib/xmodule/xmodule/modulestore/tests/test_split_modulestore_bulk_operations.py @@ -174,6 +174,13 @@ class TestBulkWriteMixinClosed(TestBulkWriteMixin): self.structure['_id'] ) + def test_version_structure_new_course(self): + self.conn.get_course_index.return_value = None + self.bulk._begin_bulk_operation(self.course_key) + version_result = self.bulk.version_structure(self.course_key, self.structure, 'user_id') + get_result = self.bulk.get_structure(self.course_key, version_result['_id']) + self.assertEquals(version_result, get_result) + class TestBulkWriteMixinClosedAfterPrevTransaction(TestBulkWriteMixinClosed, TestBulkWriteMixinPreviousTransaction): """ Test that operations on with a closed transaction aren't affected by a previously executed transaction