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:
Nathan Sprenkle
2022-10-05 15:56:08 -04:00
committed by GitHub
parent 27006febcd
commit 2f10ba0992
2 changed files with 34 additions and 4 deletions

View File

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

View File

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