From 511363ee0474be8b865f27572a1cd975d9574579 Mon Sep 17 00:00:00 2001 From: Nathan Sprenkle Date: Tue, 27 Sep 2022 12:23:19 -0400 Subject: [PATCH] fix: resolve backend issues in learner home (#31041) * fix: un-null course provider * fix: update enterprise dashboard URL * fix: update course thumbnail source Co-authored-by: nsprenkle --- lms/djangoapps/learner_home/serializers.py | 10 +++++----- lms/djangoapps/learner_home/test_serializers.py | 15 +++++++++------ lms/djangoapps/learner_home/test_utils.py | 5 +++++ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lms/djangoapps/learner_home/serializers.py b/lms/djangoapps/learner_home/serializers.py index 4eb37e50e0..42b3b61a48 100644 --- a/lms/djangoapps/learner_home/serializers.py +++ b/lms/djangoapps/learner_home/serializers.py @@ -48,7 +48,7 @@ class CourseProviderSerializer(serializers.Serializer): class CourseSerializer(serializers.Serializer): """Course header information, derived from a CourseOverview""" - bannerImgSrc = serializers.URLField(source="banner_image_url") + bannerImgSrc = serializers.URLField(source="image_urls.small") courseName = serializers.CharField(source="display_name_with_default") courseNumber = serializers.CharField(source="display_number_with_default") @@ -407,9 +407,6 @@ class LearnerEnrollmentSerializer(serializers.Serializer): gradeData = GradeDataSerializer(source="*") programs = serializers.SerializerMethodField() - # TODO - remove "allow_null" as each of these are implemented, temp for testing. - courseProvider = CourseProviderSerializer(allow_null=True) - def get_entitlement(self, instance): """ If this enrollment is the fulfillment of an entitlement, include information about the entitlement @@ -537,7 +534,10 @@ class EnterpriseDashboardSerializer(serializers.Serializer): url = serializers.SerializerMethodField() def get_url(self, instance): - return urljoin(settings.ENTERPRISE_LEARNER_PORTAL_BASE_URL, instance["uuid"]) + return urljoin( + settings.ENTERPRISE_LEARNER_PORTAL_BASE_URL, + instance["slug"], + ) class LearnerDashboardSerializer(serializers.Serializer): diff --git a/lms/djangoapps/learner_home/test_serializers.py b/lms/djangoapps/learner_home/test_serializers.py index 7778171a37..810af8db25 100644 --- a/lms/djangoapps/learner_home/test_serializers.py +++ b/lms/djangoapps/learner_home/test_serializers.py @@ -51,6 +51,7 @@ from lms.djangoapps.learner_home.test_utils import ( datetime_to_django_format, random_bool, random_date, + random_string, random_url, ) from xmodule.data import CertificatesDisplayBehaviors @@ -991,15 +992,17 @@ class TestEnterpriseDashboardSerializer(TestCase): """High-level tests for EnterpriseDashboardSerializer""" @classmethod - def generate_test_data(cls): + def generate_test_enterprise_customer(cls): return { + "name": random_string(), + "slug": str(uuid4()), + "enable_learner_portal": True, "uuid": str(uuid4()), - "name": str(uuid4()), } def test_structure(self): """Test that nothing breaks and the output fields look correct""" - input_data = self.generate_test_data() + input_data = self.generate_test_enterprise_customer() output_data = EnterpriseDashboardSerializer(input_data).data @@ -1007,12 +1010,12 @@ class TestEnterpriseDashboardSerializer(TestCase): "label", "url", ] - assert output_data.keys() == set(expected_keys) + self.assertEqual(output_data.keys(), set(expected_keys)) def test_happy_path(self): """Test that data serializes correctly""" - input_data = self.generate_test_data() + input_data = self.generate_test_enterprise_customer() output_data = EnterpriseDashboardSerializer(input_data).data @@ -1022,7 +1025,7 @@ class TestEnterpriseDashboardSerializer(TestCase): "label": input_data["name"], "url": settings.ENTERPRISE_LEARNER_PORTAL_BASE_URL + "/" - + input_data["uuid"], + + input_data["slug"], }, ) diff --git a/lms/djangoapps/learner_home/test_utils.py b/lms/djangoapps/learner_home/test_utils.py index dea168290f..699248acfb 100644 --- a/lms/djangoapps/learner_home/test_utils.py +++ b/lms/djangoapps/learner_home/test_utils.py @@ -15,6 +15,11 @@ from openedx.core.djangoapps.content.course_overviews.tests.factories import ( from xmodule.modulestore.tests.factories import CourseFactory +def random_string(): + """Test util for generating a random string""" + return str(uuid4()) + + def random_bool(): """Test util for generating a random boolean""" return bool(getrandbits(1))