def test_get_skill_from_model_with_invalid_rubric_schema_version(self): commit_cmd = skill_domain.SkillChange({ 'cmd': skill_domain.CMD_CREATE_NEW }) model = skill_models.SkillModel( id='skill_id', description='description', language_code='en', misconceptions=[], rubrics=[], next_misconception_id=0, misconceptions_schema_version=1, rubric_schema_version=0, skill_contents_schema_version=1, all_questions_merged=False ) commit_cmd_dicts = [commit_cmd.to_dict()] model.commit( self.user_id_admin, 'skill model created', commit_cmd_dicts) with self.assertRaisesRegexp( Exception, 'Sorry, we can only process v1-v%d rubric schemas at ' 'present.' % feconf.CURRENT_RUBRIC_SCHEMA_VERSION): skill_services.get_skill_from_model(model)
def test_migrate_skill_contents_to_latest_schema(self): skill_services.create_new_skill_rights('skill_id', 'user_id_admin') commit_cmd = skill_domain.SkillChange( {'cmd': skill_domain.CMD_CREATE_NEW}) explanation_content_id = feconf.DEFAULT_SKILL_EXPLANATION_CONTENT_ID skill_contents = skill_domain.SkillContents( state_domain.SubtitledHtml(explanation_content_id, feconf.DEFAULT_SKILL_EXPLANATION), [], {explanation_content_id: {}}, state_domain.WrittenTranslations.from_dict( {'translations_mapping': { explanation_content_id: {} }})) model = skill_models.SkillModel( id='skill_id', description='description', language_code='en', misconceptions=[], skill_contents=skill_contents.to_dict(), next_misconception_id=1, misconceptions_schema_version=1, skill_contents_schema_version=1, all_questions_merged=False) commit_cmd_dicts = [commit_cmd.to_dict()] model.commit('user_id_admin', 'skill model created', commit_cmd_dicts) swap_skill_object = self.swap(skill_domain, 'Skill', MockSkillObject) current_schema_version_swap = self.swap( feconf, 'CURRENT_SKILL_CONTENTS_SCHEMA_VERSION', 2) with swap_skill_object, current_schema_version_swap: skill = skill_services.get_skill_from_model(model) self.assertEqual(skill.skill_contents_schema_version, 2)
def test_migrate_misconceptions_to_latest_schema(self): commit_cmd = skill_domain.SkillChange({ 'cmd': skill_domain.CMD_CREATE_NEW }) explanation_content_id = feconf.DEFAULT_SKILL_EXPLANATION_CONTENT_ID skill_contents = skill_domain.SkillContents( state_domain.SubtitledHtml( explanation_content_id, feconf.DEFAULT_SKILL_EXPLANATION), [], state_domain.RecordedVoiceovers.from_dict({ 'voiceovers_mapping': { explanation_content_id: {} } }), state_domain.WrittenTranslations.from_dict({ 'translations_mapping': { explanation_content_id: {} } })) model = skill_models.SkillModel( id='skill_id', description='description', language_code='en', misconceptions=[{ 'id': 1, 'name': 'name', 'notes': 'notes', 'feedback': 'default_feedback' }], rubrics=[], skill_contents=skill_contents.to_dict(), next_misconception_id=2, misconceptions_schema_version=1, rubric_schema_version=1, skill_contents_schema_version=1, all_questions_merged=False ) commit_cmd_dicts = [commit_cmd.to_dict()] model.commit( 'user_id_admin', 'skill model created', commit_cmd_dicts) current_schema_version_swap = self.swap( feconf, 'CURRENT_MISCONCEPTIONS_SCHEMA_VERSION', 2) with current_schema_version_swap: skill = skill_services.get_skill_from_model(model) self.assertEqual(skill.misconceptions_schema_version, 2) self.assertEqual(skill.misconceptions[0].must_be_addressed, True)
def test_get_skill_from_model(self): skill_model = skill_models.SkillModel.get(self.SKILL_ID) skill = skill_services.get_skill_from_model(skill_model) self.assertEqual(skill.to_dict(), self.skill.to_dict())