From 4cd92ec12bf8501917a0a7080556d541579d90c5 Mon Sep 17 00:00:00 2001 From: Jansen Kantor Date: Fri, 21 Oct 2022 10:08:14 -0400 Subject: [PATCH] fix: remove psudosessioncourseserializer as we now have access to courseoverviews (#31187) --- lms/djangoapps/learner_home/serializers.py | 33 ++++++----------- .../learner_home/test_serializers.py | 36 ++----------------- 2 files changed, 14 insertions(+), 55 deletions(-) diff --git a/lms/djangoapps/learner_home/serializers.py b/lms/djangoapps/learner_home/serializers.py index 527aaff4a4..fa2615aa5a 100644 --- a/lms/djangoapps/learner_home/serializers.py +++ b/lms/djangoapps/learner_home/serializers.py @@ -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): diff --git a/lms/djangoapps/learner_home/test_serializers.py b/lms/djangoapps/learner_home/test_serializers.py index 071563f4ee..965af9bb6e 100644 --- a/lms/djangoapps/learner_home/test_serializers.py +++ b/lms/djangoapps/learner_home/test_serializers.py @@ -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,