def initdb(self, default): """ Initialize the database and create one test course in it """ # set the default modulestore self.options['stores']['default'] = self.options['stores'][default] self.store = MixedModuleStore(**self.options) self.addCleanup(self.store.close_all_connections) self.course_locations = { course_id: generate_location(course_id) for course_id in [self.MONGO_COURSEID, self.XML_COURSEID1, self.XML_COURSEID2] } self.fake_location = Location('i4x', 'foo', 'bar', 'vertical', 'baz') self.import_chapter_location = self.course_locations[self.MONGO_COURSEID].replace( category='chapter', name='Overview' ) self.xml_chapter_location = self.course_locations[self.XML_COURSEID1].replace( category='chapter', name='Overview' ) # get Locators and set up the loc mapper if app is Locator based if default == 'split': self.fake_location = loc_mapper().translate_location('foo/bar/2012_Fall', self.fake_location) self._create_course(default, self.MONGO_COURSEID)
def build_with_contentstore(self, contentstore): """ A contextmanager that returns a mixed modulestore built on top of modulestores generated by other builder classes. Args: contentstore: The contentstore that this modulestore should use to store all of its assets. """ names, generators = zip(*self.store_builders) with nested(*(gen.build_with_contentstore(contentstore) for gen in generators)) as modulestores: # Make the modulestore creation function just return the already-created modulestores store_iterator = iter(modulestores) next_modulestore = lambda *args, **kwargs: store_iterator.next() # Generate a fake list of stores to give the already generated stores appropriate names stores = [{ 'NAME': name, 'ENGINE': 'This space deliberately left blank' } for name in names] self.mixed_modulestore = MixedModuleStore( contentstore, self.mappings, stores, create_modulestore_instance=next_modulestore, xblock_mixins=XBLOCK_MIXINS, ) yield self.mixed_modulestore
def initdb(self, default): """ Initialize the database and create one test course in it """ # set the default modulestore self.options['stores']['default'] = self.options['stores'][default] self.store = MixedModuleStore(**self.options) self.addCleanup(self.store.close_all_connections) # convert to CourseKeys self.course_locations = { course_id: SlashSeparatedCourseKey.from_deprecated_string(course_id) for course_id in [self.MONGO_COURSEID, self.XML_COURSEID1, self.XML_COURSEID2] } # and then to the root UsageKey self.course_locations = { course_id: course_key.make_usage_key('course', course_key.run) for course_id, course_key in self.course_locations.iteritems() # pylint: disable=maybe-no-member } self.fake_location = Location('foo', 'bar', 'slowly', 'vertical', 'baz') self.import_chapter_location = self.course_locations[ self.MONGO_COURSEID].replace(category='chapter', name='Overview') self.xml_chapter_location = self.course_locations[ self.XML_COURSEID1].replace(category='chapter', name='Overview') # get Locators and set up the loc mapper if app is Locator based if default == 'split': self.fake_location = loc_mapper().translate_location( self.fake_location) self._create_course( default, self.course_locations[self.MONGO_COURSEID].course_key)
def setUp(self): unittest.TestCase.setUp(self) options = copy.copy(OPTIONS) del options['reference_type'] self.connection = pymongo.MongoClient( host=HOST, port=PORT, tz_aware=True, ) self.store = MixedModuleStore(**options)
def _perform_test_using_store(self, store_type, test_to_perform): """ Helper method to run a test function that uses a specific store """ with MongoContentstoreBuilder().build() as contentstore: store = MixedModuleStore( contentstore=contentstore, create_modulestore_instance=create_modulestore_instance, mappings={}, **self.OPTIONS) self.addCleanup(store.close_all_connections) with store.default_store(store_type): self.setup_course_base(store) test_to_perform(store)
def setUp(self): """ Set up requirements for testing: a user ID and a modulestore """ super(MixedSplitTestCase, self).setUp() self.user_id = ModuleStoreEnum.UserID.test self.store = MixedModuleStore( None, create_modulestore_instance=create_modulestore_instance, mappings={}, **self.MIXED_OPTIONS) self.addCleanup(self.store.close_all_connections) self.addCleanup(self.store._drop_database) # pylint: disable=protected-access
def initdb(): # connect to the db _options = {} _options.update(OPTIONS) store = MixedModuleStore(**_options) import_from_xml(store._get_modulestore_for_courseid(IMPORT_COURSEID), DATA_DIR, ['toy'], target_location_namespace=Location( 'i4x', TestMixedModuleStore.import_org, TestMixedModuleStore.import_course, 'course', TestMixedModuleStore.import_run)) return store