fix: learner home entitlement image fallback (#31107)
* fix: add default for pseudo session image This keeps the serializer from breaking when image is not present in a pseudo session.
This commit is contained in:
@@ -462,7 +462,7 @@ class UnfulfilledEntitlementSerializer(serializers.Serializer):
|
||||
'Private' Serializer for the 'course' key data. This data comes from the pseudo session
|
||||
"""
|
||||
|
||||
bannerImgSrc = serializers.URLField(source="image.src")
|
||||
bannerImgSrc = serializers.URLField(source="image.src", default=None)
|
||||
courseName = serializers.CharField(source="title")
|
||||
courseNumber = serializers.CharField(source="key")
|
||||
|
||||
|
||||
@@ -765,9 +765,7 @@ class TestProgramsSerializer(TestCase):
|
||||
output_data = RelatedProgramSerializer(input_data).data
|
||||
|
||||
# Test the output
|
||||
self.assertEqual(
|
||||
output_data['bannerImgSrc'], None
|
||||
)
|
||||
self.assertEqual(output_data["bannerImgSrc"], None)
|
||||
|
||||
def test_empty_sessions(self):
|
||||
input_data = {"relatedPrograms": []}
|
||||
@@ -883,6 +881,38 @@ class TestUnfulfilledEntitlementSerializer(LearnerDashboardBaseTest):
|
||||
assert output_data["courseProvider"] is not None
|
||||
assert output_data["programs"] == {"relatedPrograms": []}
|
||||
|
||||
def test_no_image(self):
|
||||
# Given entitlements
|
||||
(
|
||||
unfulfilled_entitlement,
|
||||
pseudo_sessions,
|
||||
available_sessions,
|
||||
) = self.make_unfulfilled_entitlement()
|
||||
|
||||
# where pseudo sessions don't have images
|
||||
for course_uuid in pseudo_sessions:
|
||||
pseudo_session = pseudo_sessions[course_uuid]
|
||||
pseudo_session["image"] = None
|
||||
|
||||
pseudo_session_course_overviews = self.make_pseudo_session_course_overviews(
|
||||
unfulfilled_entitlement, pseudo_sessions
|
||||
)
|
||||
|
||||
context = {
|
||||
"unfulfilled_entitlement_pseudo_sessions": pseudo_sessions,
|
||||
"course_entitlement_available_sessions": available_sessions,
|
||||
"pseudo_session_course_overviews": pseudo_session_course_overviews,
|
||||
"programs": {},
|
||||
}
|
||||
|
||||
# When I serialize
|
||||
output_data = UnfulfilledEntitlementSerializer(
|
||||
unfulfilled_entitlement, context=context
|
||||
).data
|
||||
|
||||
# Then I get None for bannerImgSrc instead of throwing an exception
|
||||
self.assertIsNone(output_data["course"]["bannerImgSrc"])
|
||||
|
||||
def test_programs(self):
|
||||
(
|
||||
unfulfilled_entitlement,
|
||||
|
||||
Reference in New Issue
Block a user