Merge pull request #13765 from edx/efischer/grades_task_retry

Recalculate Subsection Grade task retry logic
This commit is contained in:
Eric Fischer
2016-10-20 10:47:58 -04:00
committed by GitHub
2 changed files with 32 additions and 10 deletions

View File

@@ -4,6 +4,7 @@ Tests for the functionality and infrastructure of grades tasks.
import ddt
from django.conf import settings
from django.db.utils import IntegrityError
from mock import patch
from unittest import skip
@@ -154,3 +155,20 @@ class RecalculateSubsectionGradeTest(ModuleStoreTestCase):
self.score_changed_kwargs['usage_id'],
)
)
@patch('lms.djangoapps.grades.tasks.recalculate_subsection_grade.retry')
@patch('lms.djangoapps.grades.new.subsection_grade.SubsectionGradeFactory.update')
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=(
self.score_changed_kwargs['user_id'],
self.score_changed_kwargs['course_id'],
self.score_changed_kwargs['usage_id'],
)
)
self.assertTrue(mock_retry.called)