Exemplo n.º 1
0
 def _apply_recalculate_subsection_grade(self, mock_score=(1.0, 2.0)):
     """
     Calls the recalculate_subsection_grade task with necessary
     mocking in place.
     """
     with self.mock_get_score(mock_score):
         recalculate_subsection_grade.apply(kwargs=self.recalculate_subsection_grade_kwargs)
Exemplo n.º 2
0
 def _apply_recalculate_subsection_grade(self):
     """
     Calls the recalculate_subsection_grade task with necessary
     mocking in place.
     """
     with self.mock_get_score():
         recalculate_subsection_grade.apply(args=tuple(self.recalculate_subsection_grade_kwargs.values()))
Exemplo n.º 3
0
 def _apply_recalculate_subsection_grade(self, mock_score=(1.0, 2.0)):
     """
     Calls the recalculate_subsection_grade task with necessary
     mocking in place.
     """
     with self.mock_get_score(mock_score):
         recalculate_subsection_grade.apply(kwargs=self.recalculate_subsection_grade_kwargs)
Exemplo n.º 4
0
 def test_query_counts_with_feature_flag(self, default_store, feature_flag):
     PersistentGradesEnabledFlag.objects.create(enabled=feature_flag)
     with self.store.default_store(default_store):
         self.set_up_course()
         with check_mongo_calls(0) and self.assertNumQueries(
                 3 if feature_flag else 2):
             recalculate_subsection_grade.apply(
                 args=tuple(self.score_changed_kwargs.values()))
Exemplo n.º 5
0
 def test_subsection_grades_not_enabled_on_course(self, default_store):
     with self.store.default_store(default_store):
         self.set_up_course(enable_subsection_grades=False)
         self.assertFalse(
             PersistentGradesEnabledFlag.feature_enabled(self.course.id))
         with check_mongo_calls(2) and self.assertNumQueries(0):
             recalculate_subsection_grade.apply(
                 args=tuple(self.score_changed_kwargs.values()))
Exemplo n.º 6
0
 def _apply_recalculate_subsection_grade(self):
     """
     Calls the recalculate_subsection_grade task with necessary
     mocking in place.
     """
     with self.mock_get_score():
         recalculate_subsection_grade.apply(
             args=tuple(self.recalculate_subsection_grade_kwargs.values()))
Exemplo n.º 7
0
 def test_retry_on_integrity_error(self, mock_update, mock_retry):
     """
     Ensures that tasks will be retried if IntegrityErrors are encountered.
     """
     self.set_up_course()
     mock_update.side_effect = IntegrityError("WHAMMY")
     recalculate_subsection_grade.apply(
         args=tuple(self.score_changed_kwargs.values()))
     self.assertTrue(mock_retry.called)
Exemplo n.º 8
0
 def test_subsection_grade_updated(self, default_store):
     with self.store.default_store(default_store):
         self.set_up_course()
         self.assertTrue(
             PersistentGradesEnabledFlag.feature_enabled(self.course.id))
         with check_mongo_calls(2) and self.assertNumQueries(13):
             recalculate_subsection_grade.apply(args=(
                 self.score_changed_kwargs['user_id'],
                 self.score_changed_kwargs['course_id'],
                 self.score_changed_kwargs['usage_id'],
             ))
Exemplo n.º 9
0
 def test_single_call_to_create_block_structure(self):
     self.set_up_course()
     self.assertTrue(
         PersistentGradesEnabledFlag.feature_enabled(self.course.id))
     with patch(
             'openedx.core.lib.block_structure.factory.BlockStructureFactory.create_from_cache',
             return_value=None,
     ) as mock_block_structure_create:
         recalculate_subsection_grade.apply(
             args=tuple(self.score_changed_kwargs.values()))
         self.assertEquals(mock_block_structure_create.call_count, 2)
Exemplo n.º 10
0
 def test_query_count_does_not_change_with_more_problems(
         self, default_store):
     with self.store.default_store(default_store):
         self.set_up_course()
         self.assertTrue(
             PersistentGradesEnabledFlag.feature_enabled(self.course.id))
         ItemFactory.create(parent=self.sequential,
                            category='problem',
                            display_name='problem2')
         ItemFactory.create(parent=self.sequential,
                            category='problem',
                            display_name='problem3')
         with check_mongo_calls(2) and self.assertNumQueries(13):
             recalculate_subsection_grade.apply(
                 args=tuple(self.score_changed_kwargs.values()))
Exemplo n.º 11
0
 def test_subsection_update_triggers_course_update(self,
                                                   mock_course_signal):
     """
     Ensures that the subsection update operation also updates the course grade.
     """
     self.set_up_course()
     mock_return = uuid4()
     course_key = CourseLocator.from_string(unicode(self.course.id))
     course = modulestore().get_course(course_key, depth=0)
     with patch(
             'lms.djangoapps.grades.new.subsection_grade.SubsectionGradeFactory.update',
             return_value=mock_return):
         recalculate_subsection_grade.apply(
             args=tuple(self.score_changed_kwargs.values()))
     mock_course_signal.assert_called_once_with(
         sender=recalculate_subsection_grade,
         course=course,
         user=self.user,
         subsection_grade=mock_return,
     )
Exemplo n.º 12
0
 def test_query_counts_with_feature_flag(self, default_store, feature_flag):
     PersistentGradesEnabledFlag.objects.create(enabled=feature_flag)
     with self.store.default_store(default_store):
         self.set_up_course()
         with check_mongo_calls(0) and self.assertNumQueries(3 if feature_flag else 2):
             recalculate_subsection_grade.apply(kwargs=self.recalculate_subsection_grade_kwargs)
Exemplo n.º 13
0
 def test_retry_subsection_grade_on_no_score(self, mock_retry):
     self.set_up_course()
     with self.mock_get_score(score=None):
         recalculate_subsection_grade.apply(args=tuple(self.recalculate_subsection_grade_kwargs.values()))
     self.assertTrue(mock_retry.called)
Exemplo n.º 14
0
 def test_retry_subsection_grade_on_no_score(self, mock_retry):
     self.set_up_course()
     with self.mock_get_score(score=None):
         recalculate_subsection_grade.apply(
             args=tuple(self.recalculate_subsection_grade_kwargs.values()))
     self.assertTrue(mock_retry.called)