diff --git a/lms/djangoapps/course_api/serializers.py b/lms/djangoapps/course_api/serializers.py index 4492fa5a21f4..0a11ac38173a 100644 --- a/lms/djangoapps/course_api/serializers.py +++ b/lms/djangoapps/course_api/serializers.py @@ -139,6 +139,12 @@ def get_blocks_url(self, course_overview): ]) return self.context['request'].build_absolute_uri(base_url) + def to_representation(self, instance): + response = super().to_representation(instance) + if can_show_certificate_available_date_field(instance): + response['certificate_available_date'] = instance.certificate_available_date + return response + class CourseDetailSerializer(CourseSerializer): # pylint: disable=abstract-method """ diff --git a/lms/djangoapps/course_api/tests/test_serializers.py b/lms/djangoapps/course_api/tests/test_serializers.py index 551e2bbb55f1..3a01c301de94 100644 --- a/lms/djangoapps/course_api/tests/test_serializers.py +++ b/lms/djangoapps/course_api/tests/test_serializers.py @@ -142,6 +142,31 @@ def test_pacing(self, self_paced, expected_pacing): result = self._get_result(course) assert result['pacing'] == expected_pacing + def test_certificate_available_date_included(self): + """Test that certificate_available_date is included when the field should be shown.""" + course = self.create_course() + with mock.patch( + "lms.djangoapps.course_api.serializers.can_show_certificate_available_date_field", + return_value=True, + ): + result = self._get_result(course) + assert 'certificate_available_date' in result + actual = result['certificate_available_date'] + if isinstance(actual, datetime): + assert actual.strftime('%Y-%m-%dT%H:%M:%SZ') == '2015-08-14T00:00:00Z' + else: + assert actual == '2015-08-14T00:00:00Z' + + def test_certificate_available_date_excluded(self): + """Test that certificate_available_date is excluded when the field should not be shown.""" + course = self.create_course() + with mock.patch( + "lms.djangoapps.course_api.serializers.can_show_certificate_available_date_field", + return_value=False, + ): + result = self._get_result(course) + assert 'certificate_available_date' not in result + class TestCourseDetailSerializer(TestCourseSerializer): # pylint: disable=test-inherits-tests """