Commit dea6b764 by Nimisha Asthagiri

Mobile enrollments API: sort order by recent enrollment date.

parent a07f6072
...@@ -5,7 +5,7 @@ Tests for users API ...@@ -5,7 +5,7 @@ Tests for users API
import datetime import datetime
from django.utils import timezone 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 xmodule.modulestore.django import modulestore
from student.models import CourseEnrollment from student.models import CourseEnrollment
...@@ -66,6 +66,23 @@ class TestUserEnrollmentApi(MobileAPITestCase, MobileAuthUserTestMixin, MobileEn ...@@ -66,6 +66,23 @@ class TestUserEnrollmentApi(MobileAPITestCase, MobileAuthUserTestMixin, MobileEn
courses = response.data courses = response.data
self.assertEqual(len(courses), 0) 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): class CourseStatusAPITestCase(MobileAPITestCase):
""" """
......
...@@ -241,7 +241,10 @@ class UserCourseEnrollmentsList(generics.ListAPIView): ...@@ -241,7 +241,10 @@ class UserCourseEnrollmentsList(generics.ListAPIView):
lookup_field = 'username' lookup_field = 'username'
def get_queryset(self): 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 [ return [
enrollment for enrollment in enrollments enrollment for enrollment in enrollments
if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course) if enrollment.course and is_mobile_available_for_user(self.request.user, enrollment.course)
......
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