def test_get_rubrics_of_linked_skills(self): example_1 = skill_domain.WorkedExample( state_domain.SubtitledHtml('2', '<p>Example Question 1</p>'), state_domain.SubtitledHtml('3', '<p>Example Explanation 1</p>')) self.save_new_skill( 'skill_id_1', self.user_id_admin, description='Description 1', misconceptions=[], skill_contents=skill_domain.SkillContents( state_domain.SubtitledHtml('1', '<p>Explanation</p>'), [example_1], state_domain.RecordedVoiceovers.from_dict( {'voiceovers_mapping': { '1': {}, '2': {}, '3': {} }}), state_domain.WrittenTranslations.from_dict( {'translations_mapping': { '1': {}, '2': {}, '3': {} }}))) self.save_new_skill( 'skill_id_2', self.user_id_admin, description='Description 2', misconceptions=[], skill_contents=skill_domain.SkillContents( state_domain.SubtitledHtml('1', '<p>Explanation</p>'), [example_1], state_domain.RecordedVoiceovers.from_dict( {'voiceovers_mapping': { '1': {}, '2': {}, '3': {} }}), state_domain.WrittenTranslations.from_dict( {'translations_mapping': { '1': {}, '2': {}, '3': {} }}))) skill_services.delete_skill(self.user_id_admin, 'skill_id_2') skill_rubrics, deleted_skill_ids = ( skill_services.get_rubrics_of_skills(['skill_id_1', 'skill_id_2'])) self.assertEqual(deleted_skill_ids, ['skill_id_2']) self.assertEqual( skill_rubrics, { 'skill_id_1': [ skill_domain.Rubric(constants.SKILL_DIFFICULTIES[0], 'Explanation 1').to_dict(), skill_domain.Rubric(constants.SKILL_DIFFICULTIES[1], 'Explanation 2').to_dict(), skill_domain.Rubric(constants.SKILL_DIFFICULTIES[2], 'Explanation 3').to_dict() ], 'skill_id_2': None })
def test_valid_rubric_difficulty(self): self.skill.rubrics = [skill_domain.Rubric( 'invalid_difficulty', '<p>Explanation</p>')] self._assert_validation_error('Invalid difficulty received for rubric')
def test_valid_rubric_difficulty_type(self): self.skill.rubrics = [skill_domain.Rubric(10, '<p>Explanation</p>')] self._assert_validation_error('Expected difficulty to be a string')
def setUp(self): super(SubtopicPageCommitLogEntryModelValidatorTests, self).setUp() self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME) self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL) self.signup(USER_EMAIL, USER_NAME) self.user_id = self.get_user_id_from_email(USER_EMAIL) self.signup(self.ADMIN_EMAIL, self.ADMIN_USERNAME) self.admin_id = self.get_user_id_from_email(self.ADMIN_EMAIL) self.set_admins([self.ADMIN_USERNAME]) topics = [topic_domain.Topic.create_default_topic( '%s' % i, 'topic%s' % i, 'abbrev-%s' % chr(120 + i), 'description%s' % i) for i in python_utils.RANGE(3)] rubrics = [ skill_domain.Rubric( constants.SKILL_DIFFICULTIES[0], ['Explanation 1']), skill_domain.Rubric( constants.SKILL_DIFFICULTIES[1], ['Explanation 2']), skill_domain.Rubric( constants.SKILL_DIFFICULTIES[2], ['Explanation 3'])] skills = [ skill_domain.Skill.create_default_skill( '%s' % i, 'skill%s' % i, rubrics) for i in python_utils.RANGE(9)] for skill in skills: skill_services.save_new_skill(self.owner_id, skill) stories = [story_domain.Story.create_default_story( '%s' % i, 'title %d', 'description %d' % i, '%s' % (python_utils.divide(i, 2)), 'title-%s' % chr(97 + i) ) for i in python_utils.RANGE(6)] for story in stories: story_services.save_new_story(self.owner_id, story) language_codes = ['ar', 'en', 'en'] for index, topic in enumerate(topics): topic.language_code = language_codes[index] topic.add_additional_story('%s' % (index * 2)) topic.add_canonical_story('%s' % (index * 2 + 1)) topic.add_uncategorized_skill_id('%s' % (index * 3)) topic.add_uncategorized_skill_id('%s' % (index * 3 + 1)) topic.add_uncategorized_skill_id('%s' % (index * 3 + 2)) topic_services.save_new_topic(self.owner_id, topic) if index == 0: committer_id = self.user_id else: committer_id = self.owner_id topic_services.update_topic_and_subtopic_pages( committer_id, '%s' % index, [topic_domain.TopicChange({ 'cmd': 'add_subtopic', 'title': 'subtopic1', 'subtopic_id': 1 }), topic_domain.TopicChange({ 'cmd': 'move_skill_id_to_subtopic', 'old_subtopic_id': None, 'new_subtopic_id': 1, 'skill_id': '%s' % (index * 3) }), topic_domain.TopicChange({ 'cmd': 'move_skill_id_to_subtopic', 'old_subtopic_id': None, 'new_subtopic_id': 1, 'skill_id': '%s' % (index * 3 + 1) })], 'Changes.') self.model_instance_0 = ( subtopic_models.SubtopicPageCommitLogEntryModel.get_by_id( 'subtopicpage-0-1-1')) self.model_instance_1 = ( subtopic_models.SubtopicPageCommitLogEntryModel.get_by_id( 'subtopicpage-1-1-1')) self.model_instance_2 = ( subtopic_models.SubtopicPageCommitLogEntryModel.get_by_id( 'subtopicpage-2-1-1')) self.job_class = ( prod_validation_jobs_one_off .SubtopicPageCommitLogEntryModelAuditOneOffJob)