From 5d16ed46a23d3a2b98805ab7467936420d62ab75 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Fri, 1 May 2015 12:36:30 -0400 Subject: [PATCH] Enrollment API course details include credit modes. Credit modes are hidden by default, since the user isn't allowed to select them on the track selection page. This commit exposes credit modes through the enrollment API so that consumers can see that a course has a credit track. --- common/djangoapps/enrollment/serializers.py | 4 +++- .../djangoapps/enrollment/tests/test_views.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/common/djangoapps/enrollment/serializers.py b/common/djangoapps/enrollment/serializers.py index 4f9d78bf63..d7f4960e4e 100644 --- a/common/djangoapps/enrollment/serializers.py +++ b/common/djangoapps/enrollment/serializers.py @@ -40,7 +40,9 @@ class CourseField(serializers.RelatedField): def to_native(self, course): course_id = unicode(course.id) - course_modes = ModeSerializer(CourseMode.modes_for_course(course.id)).data # pylint: disable=no-member + course_modes = ModeSerializer( + CourseMode.modes_for_course(course.id, only_selectable=False) + ).data # pylint: disable=no-member return { "course_id": course_id, diff --git a/common/djangoapps/enrollment/tests/test_views.py b/common/djangoapps/enrollment/tests/test_views.py index 5e76626e0b..f54d6c45e0 100644 --- a/common/djangoapps/enrollment/tests/test_views.py +++ b/common/djangoapps/enrollment/tests/test_views.py @@ -306,6 +306,23 @@ class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase): self.assertEqual(mode['sku'], '123') self.assertEqual(mode['name'], CourseMode.HONOR) + def test_get_course_details_with_credit_course(self): + CourseModeFactory.create( + course_id=self.course.id, + mode_slug=CourseMode.CREDIT_MODE, + mode_display_name=CourseMode.CREDIT_MODE, + ) + resp = self.client.get( + reverse('courseenrollmentdetails', kwargs={"course_id": unicode(self.course.id)}) + ) + self.assertEqual(resp.status_code, status.HTTP_200_OK) + + data = json.loads(resp.content) + self.assertEqual(unicode(self.course.id), data['course_id']) + mode = data['course_modes'][0] + self.assertEqual(mode['slug'], CourseMode.CREDIT_MODE) + self.assertEqual(mode['name'], CourseMode.CREDIT_MODE) + @ddt.data( # NOTE: Studio requires a start date, but this is not # enforced at the data layer, so we need to handle the case