Mobile enrollments API: sort order by recent enrollment date.

This commit is contained in:
Nimisha Asthagiri
2015-01-15 20:02:39 -05:00
parent a07f607281
commit dea6b764de
2 changed files with 22 additions and 2 deletions

View File

@@ -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
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):
""" """

View File

@@ -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)