diff --git a/cms/djangoapps/contentstore/views/tests/test_import_export.py b/cms/djangoapps/contentstore/views/tests/test_import_export.py index 9fcba609e1..ddbee107bf 100644 --- a/cms/djangoapps/contentstore/views/tests/test_import_export.py +++ b/cms/djangoapps/contentstore/views/tests/test_import_export.py @@ -756,7 +756,7 @@ class TestCourseExportImport(LibraryTestCase): return self.get_lib_content_block_children(self.store.get_item(block_location).children[0]) - def assert_problem_display_names(self, source_course_location, dest_course_location): + def assert_problem_display_names(self, source_course_location, dest_course_location, is_published): """ Asserts that problems' display names in both source and destination courses are same. """ @@ -766,9 +766,22 @@ class TestCourseExportImport(LibraryTestCase): self.assertEquals(len(source_course_lib_children), len(dest_course_lib_children)) for source_child_location, dest_child_location in zip(source_course_lib_children, dest_course_lib_children): - source_child = self.store.get_item(source_child_location) - dest_child = self.store.get_item(dest_child_location) - self.assertEquals(source_child.display_name, dest_child.display_name) + # Assert problem names on draft branch. + with self.store.branch_setting(branch_setting=ModuleStoreEnum.Branch.draft_preferred): + self.assert_names(source_child_location, dest_child_location) + + if is_published: + # Assert problem names on publish branch. + with self.store.branch_setting(branch_setting=ModuleStoreEnum.Branch.published_only): + self.assert_names(source_child_location, dest_child_location) + + def assert_names(self, source_child_location, dest_child_location): + """ + Check if blocks have same display_name. + """ + source_child = self.store.get_item(source_child_location) + dest_child = self.store.get_item(dest_child_location) + self.assertEquals(source_child.display_name, dest_child.display_name) @ddt.data(True, False) def test_library_content_on_course_export_import(self, publish_item): @@ -805,5 +818,6 @@ class TestCourseExportImport(LibraryTestCase): self.assert_problem_display_names( self.source_course.location, - dest_course.location + dest_course.location, + publish_item ) diff --git a/common/lib/xmodule/xmodule/modulestore/xml_importer.py b/common/lib/xmodule/xmodule/modulestore/xml_importer.py index f81fc04b25..382e0cbde2 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml_importer.py +++ b/common/lib/xmodule/xmodule/modulestore/xml_importer.py @@ -753,11 +753,18 @@ def _update_and_import_module( # if library exists, update source_library_version and children # according to this existing library and library content block. if store.get_library(block.source_library_key): - LibraryToolsService(store).update_children( - block, - user_id, - version=block.source_library_version - ) + + # Update library content block's children on draft branch + with store.branch_setting(branch_setting=ModuleStoreEnum.Branch.draft_preferred): + LibraryToolsService(store).update_children( + block, + user_id, + version=block.source_library_version + ) + + # Publish it if importing the course for branch setting published_only. + if store.get_branch_setting() == ModuleStoreEnum.Branch.published_only: + store.publish(block.location, user_id) return block