From 7a8834a4b986743c2ac73b148d999242c12a5d89 Mon Sep 17 00:00:00 2001 From: muhammad-ammar Date: Wed, 7 Sep 2022 15:52:56 +0500 Subject: [PATCH] fix: return empty response if no enterprise enrollments exists for a learner --- .../api/v0/tests/test_views.py | 21 +++++++++++++++++++ .../learner_dashboard/api/v0/views.py | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/lms/djangoapps/learner_dashboard/api/v0/tests/test_views.py b/lms/djangoapps/learner_dashboard/api/v0/tests/test_views.py index 7072235ef1..e8d3fc5f98 100644 --- a/lms/djangoapps/learner_dashboard/api/v0/tests/test_views.py +++ b/lms/djangoapps/learner_dashboard/api/v0/tests/test_views.py @@ -7,6 +7,7 @@ from uuid import uuid4 from django.core.cache import cache from django.urls import reverse_lazy +from enterprise.models import EnterpriseCourseEnrollment from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory as ModuleStoreCourseFactory @@ -209,3 +210,23 @@ class TestProgramsView(SharedModuleStoreTestCase, ProgramCacheMixin): 'in_progress': 0, 'not_started': 1 } + + @with_site_configuration(configuration={'COURSE_CATALOG_API_URL': 'foo'}) + def test_program_empty_list_if_no_enterprise_enrollments(self): + """ + Verify API returns empty response if no enterprise enrollments exists for a learner. + """ + # delete all enterprise course enrollments for the user + EnterpriseCourseEnrollment.objects.filter( + enterprise_customer_user__user_id=self.user.id + ).delete() + + cache.set( + SITE_PROGRAM_UUIDS_CACHE_KEY_TPL.format(domain=self.site.domain), + [self.program_uuid], + None + ) + + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data, []) diff --git a/lms/djangoapps/learner_dashboard/api/v0/views.py b/lms/djangoapps/learner_dashboard/api/v0/views.py index a1f206f9e0..87ebf1d592 100644 --- a/lms/djangoapps/learner_dashboard/api/v0/views.py +++ b/lms/djangoapps/learner_dashboard/api/v0/views.py @@ -96,6 +96,10 @@ class Programs(APIView): user = request.user enrollments = self._get_enterprise_course_enrollments(enterprise_uuid, user) + # return empty reponse if no enterprise enrollments exists for a user + if not enrollments: + return Response([]) + meter = ProgramProgressMeter( request.site, user,