def test_grade_average_is_calculated_correctly():
    assert ects_grade_calculator.average_grade([
        MagicMock(ects_points=7.5, grade=12),
        MagicMock(ects_points=5.0, grade=7),
        MagicMock(ects_points=10.0, grade=4)
    ]) == 7.3
    assert ects_grade_calculator.average_grade([
        MagicMock(ects_points=10.0, grade=10),
        MagicMock(ects_points=7.5, grade=-3),
        MagicMock(ects_points=5.0, grade=2),
        MagicMock(ects_points=17.5, grade=0)
    ]) == 2.2
def _build_grade_booster(tokenized_exam_results):
    exam_results = list(
        map(lambda ter: ter.exam_result, tokenized_exam_results)
    )
    average_grade = ects_grade_calculator.average_grade(exam_results)
    grade_booster = KeywordGradeBooster(average_grade)
    return grade_booster
def test_grade_average_without_meaningful_grades():
    assert ects_grade_calculator.average_grade([
        MagicMock(ects_points=10.0, grade='BE')
    ]) is None
def test_grade_average_ignores_results_without_grade():
    assert ects_grade_calculator.average_grade([
        MagicMock(ects_points=10.0, grade=4),
        MagicMock(ects_points=7.5, grade=0),
        MagicMock(ects_points=10.0, grade='BE')
    ]) == 2.3
def test_grade_average_with_no_exam_results():
    assert ects_grade_calculator.average_grade([]) is None
def test_grade_average_class_method_version():
    assert ects_grade_calculator.average_grade([
        MagicMock(ects_points=10.0, grade=10),
        MagicMock(ects_points=5.0, grade=7)
    ]) == 9.0
def _build_grade_booster(tokenized_exam_results):
    exam_results = list(
        map(lambda ter: ter.exam_result, tokenized_exam_results))
    average_grade = ects_grade_calculator.average_grade(exam_results)
    grade_booster = KeywordGradeBooster(average_grade)
    return grade_booster
 def average_grade(self):
     """Return the average grade of the student."""
     return ects_grade_calculator.average_grade(self.exam_results)