def test_cannot_get_topic_from_model_with_invalid_schema_version(self): topic_services.create_new_topic_rights('topic_id', self.user_id_a) commit_cmd = topic_domain.TopicChange({ 'cmd': topic_domain.CMD_CREATE_NEW, 'name': 'name' }) subtopic_dict = { 'id': 1, 'title': 'subtopic_title', 'skill_ids': [] } model = topic_models.TopicModel( id='topic_id', name='name', canonical_name='canonical_name', next_subtopic_id=1, language_code='en', subtopics=[subtopic_dict], subtopic_schema_version=0 ) commit_cmd_dicts = [commit_cmd.to_dict()] model.commit( self.user_id_a, 'topic model created', commit_cmd_dicts) with self.assertRaisesRegexp( Exception, 'Sorry, we can only process v1-v%d subtopic schemas at ' 'present.' % feconf.CURRENT_SUBTOPIC_SCHEMA_VERSION): topic_services.get_topic_from_model(model)
def test_get_topic_from_model_with_unsupported_subtopic_schema(self): topic_model = topic_models.TopicModel.get(self.TOPIC_ID) topic_model.subtopic_schema_version = 0 with self.assertRaisesRegexp(Exception, 'Sorry, we can only process v1-v%d subtopic ' 'schemas at present.' % feconf.CURRENT_SUBTOPIC_SCHEMA_VERSION): topic = topic_services.get_topic_from_model(topic_model)
def test_migrate_subtopic_to_latest_schema(self): topic_services.create_new_topic_rights('topic_id', 'user_id_admin') commit_cmd = topic_domain.TopicChange({ 'cmd': topic_domain.CMD_CREATE_NEW, 'name': 'name' }) subtopic_dict = { 'id': 1, 'title': 'subtopic_title', 'skill_ids': [] } model = topic_models.TopicModel( id='topic_id', name='name', canonical_name='Name', next_subtopic_id=1, language_code='en', subtopics=[subtopic_dict], subtopic_schema_version=1 ) commit_cmd_dicts = [commit_cmd.to_dict()] model.commit( 'user_id_admin', 'topic model created', commit_cmd_dicts) swap_topic_object = self.swap(topic_domain, 'Topic', MockTopicObject) current_schema_version_swap = self.swap( feconf, 'CURRENT_SUBTOPIC_SCHEMA_VERSION', 2) with swap_topic_object, current_schema_version_swap: topic = topic_services.get_topic_from_model(model) self.assertEqual(topic.subtopic_schema_version, 2) self.assertEqual(topic.name, 'name') self.assertEqual(topic.canonical_name, 'name') self.assertEqual(topic.next_subtopic_id, 1) self.assertEqual(topic.language_code, 'en') self.assertEqual(len(topic.subtopics), 1) self.assertEqual(topic.subtopics[0].to_dict(), subtopic_dict)
def test_get_topic_from_model(self): topic_model = topic_models.TopicModel.get(self.TOPIC_ID) topic = topic_services.get_topic_from_model(topic_model) self.assertEqual(topic.to_dict(), self.topic.to_dict())