Commit 5d16ed46 by Will Daly

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.
parent 270ac747
...@@ -40,7 +40,9 @@ class CourseField(serializers.RelatedField): ...@@ -40,7 +40,9 @@ class CourseField(serializers.RelatedField):
def to_native(self, course): def to_native(self, course):
course_id = unicode(course.id) 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 { return {
"course_id": course_id, "course_id": course_id,
......
...@@ -306,6 +306,23 @@ class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase): ...@@ -306,6 +306,23 @@ class EnrollmentTest(EnrollmentTestMixin, ModuleStoreTestCase, APITestCase):
self.assertEqual(mode['sku'], '123') self.assertEqual(mode['sku'], '123')
self.assertEqual(mode['name'], CourseMode.HONOR) 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( @ddt.data(
# NOTE: Studio requires a start date, but this is not # NOTE: Studio requires a start date, but this is not
# enforced at the data layer, so we need to handle the case # enforced at the data layer, so we need to handle the case
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment