feat: advertised_start field added to CourseRunSerializer (#36726)

This commit is contained in:
Daniel Wong
2025-05-23 13:50:51 -06:00
committed by GitHub
parent d1854d0020
commit 58a1784db2
4 changed files with 39 additions and 3 deletions

View File

@@ -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(

View File

@@ -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,

View File

@@ -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,

View File

@@ -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):