From fca77d7f8043a7558109ff241b1a0191da20a8bf Mon Sep 17 00:00:00 2001 From: Muhammad Anas Date: Thu, 14 May 2026 15:35:30 +0500 Subject: [PATCH 1/3] fix: return certificate_available_date in courses list API response --- lms/djangoapps/course_api/serializers.py | 6 +++++ .../course_api/tests/test_serializers.py | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+) 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..34df17ee58e7 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 + @mock.patch( + "lms.djangoapps.course_api.serializers.can_show_certificate_available_date_field", + return_value=True, + ) + def test_certificate_available_date_included(self, _mock): + """Test that certificate_available_date is included when the field should be shown.""" + course = self.create_course() + 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' + + @mock.patch( + "lms.djangoapps.course_api.serializers.can_show_certificate_available_date_field", + return_value=False, + ) + def test_certificate_available_date_excluded(self, _mock): + """Test that certificate_available_date is excluded when the field should not be shown.""" + course = self.create_course() + result = self._get_result(course) + assert 'certificate_available_date' not in result + class TestCourseDetailSerializer(TestCourseSerializer): # pylint: disable=test-inherits-tests """ From ca4e910bcb642a9a459a0de64d219323677233c8 Mon Sep 17 00:00:00 2001 From: Muhammad Anas Date: Thu, 14 May 2026 16:00:58 +0500 Subject: [PATCH 2/3] fix: ruff --- .../course_api/tests/test_serializers.py | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lms/djangoapps/course_api/tests/test_serializers.py b/lms/djangoapps/course_api/tests/test_serializers.py index 34df17ee58e7..3a01c301de94 100644 --- a/lms/djangoapps/course_api/tests/test_serializers.py +++ b/lms/djangoapps/course_api/tests/test_serializers.py @@ -142,14 +142,14 @@ def test_pacing(self, self_paced, expected_pacing): result = self._get_result(course) assert result['pacing'] == expected_pacing - @mock.patch( - "lms.djangoapps.course_api.serializers.can_show_certificate_available_date_field", - return_value=True, - ) - def test_certificate_available_date_included(self, _mock): + def test_certificate_available_date_included(self): """Test that certificate_available_date is included when the field should be shown.""" course = self.create_course() - result = self._get_result(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): @@ -157,14 +157,14 @@ def test_certificate_available_date_included(self, _mock): else: assert actual == '2015-08-14T00:00:00Z' - @mock.patch( - "lms.djangoapps.course_api.serializers.can_show_certificate_available_date_field", - return_value=False, - ) - def test_certificate_available_date_excluded(self, _mock): + 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() - result = self._get_result(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 From fe11c46e55248720fff7e5aeeeff74fd6bcb6cd5 Mon Sep 17 00:00:00 2001 From: Muhammad Anas Date: Thu, 14 May 2026 18:31:44 +0500 Subject: [PATCH 3/3] temp: empty commit to run the test