From dea6b764de2b17267eab93dae69bc5cfec11c86f Mon Sep 17 00:00:00 2001 From: Nimisha Asthagiri Date: Thu, 15 Jan 2015 20:02:39 -0500 Subject: [PATCH] Mobile enrollments API: sort order by recent enrollment date. --- lms/djangoapps/mobile_api/users/tests.py | 19 ++++++++++++++++++- lms/djangoapps/mobile_api/users/views.py | 5 ++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lms/djangoapps/mobile_api/users/tests.py b/lms/djangoapps/mobile_api/users/tests.py index 58ca235e80..5f751442d0 100644 --- a/lms/djangoapps/mobile_api/users/tests.py +++ b/lms/djangoapps/mobile_api/users/tests.py @@ -5,7 +5,7 @@ Tests for users API import datetime from django.utils import timezone -from xmodule.modulestore.tests.factories import ItemFactory +from xmodule.modulestore.tests.factories import ItemFactory, CourseFactory from xmodule.modulestore.django import modulestore from student.models import CourseEnrollment @@ -66,6 +66,23 @@ class TestUserEnrollmentApi(MobileAPITestCase, MobileAuthUserTestMixin, MobileEn courses = response.data self.assertEqual(len(courses), 0) + def test_sort_order(self): + self.login() + + num_courses = 3 + courses = [] + for course_num in range(num_courses): + courses.append(CourseFactory.create(mobile_available=True)) + self.enroll(courses[course_num].id) + + # verify courses are returned in the order of enrollment, with most recently enrolled first. + response = self.api_response() + for course_num in range(num_courses): + self.assertEqual( + response.data[course_num]['course']['id'], # pylint: disable=no-member + unicode(courses[num_courses - course_num - 1].id) + ) + class CourseStatusAPITestCase(MobileAPITestCase): """ diff --git a/lms/djangoapps/mobile_api/users/views.py b/lms/djangoapps/mobile_api/users/views.py index 0b0434f7b5..a21a06a3ac 100644 --- a/lms/djangoapps/mobile_api/users/views.py +++ b/lms/djangoapps/mobile_api/users/views.py @@ -241,7 +241,10 @@ class UserCourseEnrollmentsList(generics.ListAPIView): lookup_field = 'username' def get_queryset(self): - enrollments = self.queryset.filter(user__username=self.kwargs['username'], is_active=True).order_by('created') + enrollments = self.queryset.filter( + user__username=self.kwargs['username'], + is_active=True + ).order_by('created').reverse() return [ enrollment for enrollment in enrollments if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course)