fix: remove psudosessioncourseserializer as we now have access to courseoverviews (#31187)
This commit is contained in:
@@ -473,15 +473,6 @@ class UnfulfilledEntitlementSerializer(serializers.Serializer):
|
||||
"isEnrolled": False,
|
||||
}
|
||||
|
||||
class _PseudoSessionCourseSerializer(serializers.Serializer):
|
||||
"""
|
||||
'Private' Serializer for the 'course' key data. This data comes from the pseudo session
|
||||
"""
|
||||
|
||||
bannerImgSrc = serializers.URLField(source="image.src", default=None)
|
||||
courseName = serializers.CharField(source="title")
|
||||
courseNumber = serializers.CharField(source="key")
|
||||
|
||||
# These fields contain all real data and will be serialized
|
||||
entitlement = EntitlementSerializer(source="*")
|
||||
course = serializers.SerializerMethodField()
|
||||
@@ -494,27 +485,25 @@ class UnfulfilledEntitlementSerializer(serializers.Serializer):
|
||||
certificate = LiteralField(None)
|
||||
enrollment = LiteralField(STATIC_ENTITLEMENT_ENROLLMENT_DATA)
|
||||
|
||||
def get_course(self, instance):
|
||||
def _get_course_overview(self, instance):
|
||||
"""Look up course provider from CourseOverview matching the pseudo session"""
|
||||
pseudo_session = self.context["unfulfilled_entitlement_pseudo_sessions"].get(
|
||||
str(instance.uuid)
|
||||
)
|
||||
return UnfulfilledEntitlementSerializer._PseudoSessionCourseSerializer(
|
||||
pseudo_session
|
||||
).data
|
||||
|
||||
def get_courseProvider(self, entitlement):
|
||||
"""Look up course provider from CourseOverview matching the pseudo session"""
|
||||
pseudo_session = self.context["unfulfilled_entitlement_pseudo_sessions"].get(
|
||||
str(entitlement.uuid)
|
||||
)
|
||||
course_overview = None
|
||||
|
||||
if pseudo_session:
|
||||
course_key = CourseKey.from_string(pseudo_session["key"])
|
||||
course_overview = self.context.get("pseudo_session_course_overviews").get(
|
||||
return self.context.get("pseudo_session_course_overviews").get(
|
||||
course_key
|
||||
)
|
||||
|
||||
def get_course(self, instance):
|
||||
""" Serialize course info from a course overview """
|
||||
course_overview = self._get_course_overview(instance)
|
||||
return CourseSerializer(course_overview, context=self.context).data
|
||||
|
||||
def get_courseProvider(self, instance):
|
||||
""" Serialize course provider info from a course overview """
|
||||
course_overview = self._get_course_overview(instance)
|
||||
return CourseProviderSerializer(course_overview, allow_null=True).data
|
||||
|
||||
def get_programs(self, instance):
|
||||
|
||||
@@ -907,42 +907,12 @@ class TestUnfulfilledEntitlementSerializer(LearnerDashboardBaseTest):
|
||||
output_data["enrollment"]
|
||||
== UnfulfilledEntitlementSerializer.STATIC_ENTITLEMENT_ENROLLMENT_DATA
|
||||
)
|
||||
assert output_data["course"] is not None
|
||||
assert output_data["course"] == CourseSerializer(
|
||||
pseudo_session_course_overviews.popitem()[1]
|
||||
).data
|
||||
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