def test_split_course_export_import(self): # Construct the contentstore for storing the first import with MongoContentstoreBuilder().build() as source_content: # Construct the modulestore for storing the first import (using the previously created contentstore) with SPLIT_MODULESTORE_SETUP.build(contentstore=source_content) as source_store: # Construct the contentstore for storing the second import with MongoContentstoreBuilder().build() as dest_content: # Construct the modulestore for storing the second import (using the second contentstore) with SPLIT_MODULESTORE_SETUP.build(contentstore=dest_content) as dest_store: source_course_key = source_store.make_course_key('a', 'source', '2015_Fall') # lint-amnesty, pylint: disable=no-member dest_course_key = dest_store.make_course_key('a', 'dest', '2015_Fall') # lint-amnesty, pylint: disable=no-member import_course_from_xml( source_store, 'test_user', TEST_DATA_DIR, source_dirs=['split_course_with_static_tabs'], static_content_store=source_content, target_id=source_course_key, raise_on_failure=True, create_if_not_present=True, ) export_course_to_xml( source_store, source_content, source_course_key, self.export_dir, EXPORTED_COURSE_DIR_NAME, ) source_course = source_store.get_course(source_course_key, depth=None, lazy=False) # lint-amnesty, pylint: disable=no-member assert source_course.url_name == 'course' export_dir_path = path(self.export_dir) policy_dir = export_dir_path / 'exported_source_course' / 'policies' / source_course_key.run policy_path = policy_dir / 'policy.json' assert os.path.exists(policy_path) import_course_from_xml( dest_store, 'test_user', self.export_dir, source_dirs=[EXPORTED_COURSE_DIR_NAME], static_content_store=dest_content, target_id=dest_course_key, raise_on_failure=True, create_if_not_present=True, ) dest_course = dest_store.get_course(dest_course_key, depth=None, lazy=False) # lint-amnesty, pylint: disable=no-member assert dest_course.url_name == 'course'
def test_library_import_branch_settings_again(self, branch_setting): # Construct the contentstore for storing the import with MongoContentstoreBuilder().build() as source_content: # Construct the modulestore for storing the import (using the previously created contentstore) with SPLIT_MODULESTORE_SETUP.build( contentstore=source_content) as source_store: # Use the test branch setting. with source_store.branch_setting(branch_setting): source_library_key = LibraryLocator(org='TestOrg', library='TestProbs') extract_dir = path(tempfile.mkdtemp(dir=settings.DATA_DIR)) # the extract_dir needs to be passed as a relative dir to # import_library_from_xml extract_dir_relative = path.relpath( extract_dir, settings.DATA_DIR) try: with tarfile.open( path(TEST_DATA_DIR) / 'imports' / 'library.HhJfPD.tar.gz') as tar: safetar_extractall(tar, extract_dir) import_library_from_xml( source_store, self.user.id, settings.GITHUB_REPO_ROOT, [extract_dir_relative / 'library'], static_content_store=source_content, target_id=source_library_key, load_error_modules=False, raise_on_failure=True, create_if_not_present=True, ) finally: shutil.rmtree(extract_dir)