diff --git a/courses/serializers.py b/courses/serializers.py index 45a1ca3e8..6ce41040f 100644 --- a/courses/serializers.py +++ b/courses/serializers.py @@ -718,10 +718,18 @@ def to_representation(self, instance): "grade": None, "certificate": None, } + verified_enrollment_course_runs_list = ( + models.CourseRunEnrollment.objects.filter( + user=user, + run__course=course, + enrollment_mode=EDX_ENROLLMENT_VERIFIED_MODE, + change_status=None, + ).values_list("run__id", flat=True) + ) grade = ( models.CourseRunGrade.objects.filter( - user=user, course_run__course=course + user=user, course_run__in=verified_enrollment_course_runs_list ) .order_by("-grade") .first() diff --git a/courses/serializers_test.py b/courses/serializers_test.py index 1e90ed16b..092ff920c 100644 --- a/courses/serializers_test.py +++ b/courses/serializers_test.py @@ -39,6 +39,7 @@ from flexiblepricing.constants import FlexiblePriceStatus from flexiblepricing.factories import FlexiblePriceFactory from main.test_utils import assert_drf_json_equal, drf_datetime +from openedx.constants import EDX_ENROLLMENT_VERIFIED_MODE, EDX_ENROLLMENT_AUDIT_MODE pytestmark = [pytest.mark.django_db] @@ -467,7 +468,12 @@ def test_program_requirement_deletion(): assert list(ProgramRequirement.get_tree(parent=root2)) == expected -def test_learner_record_serializer(mock_context, program_with_empty_requirements): +@pytest.mark.parametrize( + "enrollment_mode", [EDX_ENROLLMENT_VERIFIED_MODE, EDX_ENROLLMENT_AUDIT_MODE] +) +def test_learner_record_serializer( + mock_context, program_with_empty_requirements, enrollment_mode +): """Verify that saving the requirements for one program doesn't affect other programs""" program = program_with_empty_requirements @@ -482,7 +488,9 @@ def test_learner_record_serializer(mock_context, program_with_empty_requirements program.add_requirement(course) course_run = CourseRunFactory.create(course=course) course_run_enrollment = CourseRunEnrollmentFactory.create( - run=course_run, user=user + run=course_run, + user=user, + enrollment_mode=enrollment_mode, ) course_runs.append(course_run) @@ -613,6 +621,8 @@ def test_learner_record_serializer(mock_context, program_with_empty_requirements "reqtype": "Required Courses", "title": courses[0].title, } + if enrollment_mode == EDX_ENROLLMENT_AUDIT_MODE: + course_0_payload["grade"] = None assert user_info_payload == serialized_data["user"] assert program_requirements_payload == serialized_data["program"]["requirements"] assert course_0_payload == serialized_data["program"]["courses"][0]