fix: remove psudosessioncourseserializer as we now have access to courseoverviews (#31187)

This commit is contained in:
Jansen Kantor
2022-10-21 10:08:14 -04:00
committed by GitHub
parent 896b00fb6c
commit 4cd92ec12b
2 changed files with 14 additions and 55 deletions

View File

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

View File

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