Distinguish zeros from null when considering grade overrides in subsection grades.

This commit is contained in:
Alex Dusenbery
2019-02-01 17:20:21 -05:00
committed by Alex Dusenbery
parent 2c9b04db21
commit 068b4a8c44
2 changed files with 17 additions and 8 deletions

View File

@@ -195,8 +195,15 @@ class NonZeroSubsectionGrade(SubsectionGradeBase):
possible_value = getattr(grade_model, 'possible_{}'.format(score_type))
if hasattr(grade_model, 'override'):
score_type = 'graded_override' if is_graded else 'all_override'
earned_value = getattr(grade_model.override, 'earned_{}'.format(score_type)) or earned_value
possible_value = getattr(grade_model.override, 'possible_{}'.format(score_type)) or possible_value
earned_override = getattr(grade_model.override, 'earned_{}'.format(score_type))
if earned_override is not None:
earned_value = earned_override
possible_override = getattr(grade_model.override, 'possible_{}'.format(score_type))
if possible_override is not None:
possible_value = possible_override
return AggregatedScore(
tw_earned=earned_value,
tw_possible=possible_value,

View File

@@ -142,7 +142,7 @@ class TestSubsectionGradeFactory(ProblemSubmissionTestMixin, GradeTestBase):
UserFactory(),
persistent_grade,
earned_graded_override=earned_graded_override,
earned_all_override=0,
earned_all_override=earned_graded_override,
possible_graded_override=possible_graded_override,
feature=PersistentSubsectionGradeOverrideHistory.GRADEBOOK,
)
@@ -151,8 +151,10 @@ class TestSubsectionGradeFactory(ProblemSubmissionTestMixin, GradeTestBase):
# the subsection grade returned should be 0/3 due to the override.
with mock_get_score(2, 3):
grade = self.subsection_grade_factory.update(self.sequence)
self.assert_grade(
grade,
earned_graded_override or persistent_grade.earned_graded,
possible_graded_override or persistent_grade.possible_graded
)
expected_earned = earned_graded_override
if earned_graded_override is None:
expected_earned = persistent_grade.earned_graded
expected_possible = possible_graded_override
if possible_graded_override is None:
expected_possible = persistent_grade.possible_graded
self.assert_grade(grade, expected_earned, expected_possible)