Paginate results of Courses API list endpoint
* Catalog results are now paginated * Implements the new namespaced pagination described at https://openedx.atlassian.net/wiki/pages/viewpage.action?pageId=47481813 * API level code returns pythonic business objects * View layer performs serialize at the view layer * Convert views to use DRF generic views * Removes an unintentional authentication decorator that caused the detail endpoint to return a 401 for anonymous users MA-1724
This commit is contained in:
committed by
Nimisha Asthagiri
parent
11f34c1e8c
commit
f53de2c04a
67
lms/djangoapps/course_api/tests/test_serializers.py
Normal file
67
lms/djangoapps/course_api/tests/test_serializers.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
Test data created by CourseSerializer
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from rest_framework.test import APIRequestFactory
|
||||
from rest_framework.request import Request
|
||||
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.course_module import DEFAULT_START_DATE
|
||||
|
||||
from ..serializers import CourseSerializer
|
||||
from .mixins import CourseApiFactoryMixin
|
||||
|
||||
|
||||
class TestCourseSerializerFields(CourseApiFactoryMixin, ModuleStoreTestCase):
|
||||
"""
|
||||
Test variations of start_date field responses
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestCourseSerializerFields, self).setUp()
|
||||
self.staff_user = self.create_user('staff', is_staff=True)
|
||||
self.honor_user = self.create_user('honor', is_staff=False)
|
||||
self.request_factory = APIRequestFactory()
|
||||
|
||||
def _get_request(self, user=None):
|
||||
"""
|
||||
Build a Request object for the specified user
|
||||
"""
|
||||
if user is None:
|
||||
user = self.honor_user
|
||||
request = Request(self.request_factory.get('/'))
|
||||
request.user = user
|
||||
return request
|
||||
|
||||
def test_advertised_start(self):
|
||||
course = self.create_course(
|
||||
course=u'custom',
|
||||
start=datetime(2015, 3, 15),
|
||||
advertised_start=u'The Ides of March'
|
||||
)
|
||||
result = CourseSerializer(course, context={'request': self._get_request()}).data
|
||||
self.assertEqual(result['course_id'], u'edX/custom/2012_Fall')
|
||||
self.assertEqual(result['start_type'], u'string')
|
||||
self.assertEqual(result['start_display'], u'The Ides of March')
|
||||
|
||||
def test_empty_start(self):
|
||||
course = self.create_course(start=DEFAULT_START_DATE, course=u'custom')
|
||||
result = CourseSerializer(course, context={'request': self._get_request()}).data
|
||||
self.assertEqual(result['course_id'], u'edX/custom/2012_Fall')
|
||||
self.assertEqual(result['start_type'], u'empty')
|
||||
self.assertIsNone(result['start_display'])
|
||||
|
||||
def test_description(self):
|
||||
course = self.create_course()
|
||||
result = CourseSerializer(course, context={'request': self._get_request()}).data
|
||||
self.assertEqual(result['description'], u'A course about toys.')
|
||||
|
||||
def test_blocks_url(self):
|
||||
course = self.create_course()
|
||||
result = CourseSerializer(course, context={'request': self._get_request()}).data
|
||||
self.assertEqual(
|
||||
result['blocks_url'],
|
||||
u'http://testserver/api/courses/v1/blocks/?course_id=edX%2Ftoy%2F2012_Fall'
|
||||
)
|
||||
Reference in New Issue
Block a user