diff --git a/lms/djangoapps/learner_home/serializers.py b/lms/djangoapps/learner_home/serializers.py index c464e0c6a4..6235c20de8 100644 --- a/lms/djangoapps/learner_home/serializers.py +++ b/lms/djangoapps/learner_home/serializers.py @@ -97,6 +97,7 @@ class CourseRunSerializer(serializers.Serializer): max_digits=5, decimal_places=2, source="course_overview.lowest_passing_grade" ) startDate = serializers.DateTimeField(source="course_overview.start") + advertisedStart = serializers.DateTimeField(source="course_overview.advertised_start") endDate = serializers.DateTimeField(source="course_overview.end") homeUrl = serializers.SerializerMethodField() marketingUrl = serializers.URLField( diff --git a/lms/djangoapps/learner_home/test_serializers.py b/lms/djangoapps/learner_home/test_serializers.py index e7d22d5e71..7b8268b42c 100644 --- a/lms/djangoapps/learner_home/test_serializers.py +++ b/lms/djangoapps/learner_home/test_serializers.py @@ -74,7 +74,10 @@ class LearnerDashboardBaseTest(SharedModuleStoreTestCase): def create_test_enrollment(self, course_mode=CourseMode.AUDIT): """Create a test user, course, and enrollment. Return the enrollment.""" - course = CourseFactory(self_paced=True) + course = CourseFactory( + self_paced=True, + advertised_start="Winter 2015", + ) CourseModeFactory( course_id=course.id, mode_slug=course_mode, diff --git a/lms/djangoapps/learner_home/test_utils.py b/lms/djangoapps/learner_home/test_utils.py index f8a7dc29f7..3533dec220 100644 --- a/lms/djangoapps/learner_home/test_utils.py +++ b/lms/djangoapps/learner_home/test_utils.py @@ -64,9 +64,12 @@ def datetime_to_django_format(datetime_obj): return datetime_obj.strftime("%Y-%m-%dT%H:%M:%SZ") -def create_test_enrollment(user, course_mode=CourseMode.AUDIT): +def create_test_enrollment(user, course_mode=CourseMode.AUDIT, advertised_start=None): """Create a test user, course, course overview, and enrollment. Return the enrollment.""" - course = CourseFactory(self_paced=True) + course = CourseFactory( + self_paced=True, + advertised_start=advertised_start, + ) CourseModeFactory( course_id=course.id, diff --git a/lms/djangoapps/learner_home/test_views.py b/lms/djangoapps/learner_home/test_views.py index b95a53f9cb..6f0babe414 100644 --- a/lms/djangoapps/learner_home/test_views.py +++ b/lms/djangoapps/learner_home/test_views.py @@ -576,6 +576,35 @@ class TestDashboardView(BaseTestDashboardView): assert expected_keys == response_data.keys() + @patch.dict(settings.FEATURES, ENTERPRISE_ENABLED=False) + def test_response_course_advertised_start(self): + """Basic test for correct response structure""" + + # Given I am logged in + self.log_in() + + # Creating course + advertised_start = "Winter 2025" + create_test_enrollment( + self.user, advertised_start=advertised_start + ) + + # When I request the dashboard + response = self.client.get(self.view_url) + + # Then I get the expected success response + assert response.status_code == 200 + + response_data = json.loads(response.content) + assert "courses" in response_data + assert len(response_data["courses"]) > 0 + + for course in response_data["courses"]: + assert "courseRun" in course + course_run = course["courseRun"] + assert "advertisedStart" in course_run + assert course_run["advertisedStart"] == advertised_start + @patch.dict(settings.FEATURES, ENTERPRISE_ENABLED=False) @patch("lms.djangoapps.learner_home.views.get_user_account_confirmation_info") def test_email_confirmation(self, mock_user_conf_info):