Commit f2ad580e by Matthew Piatetsky

Include hidden course runs

LEARNER-834
parent 40439efd
......@@ -59,6 +59,29 @@ class CourseViewSetTests(SerializationMixin, APITestCase):
self.serialize_course(self.course, extra_context={'include_deleted_programs': True})
)
def test_get_include_hidden_course_runs(self):
"""
Verify the endpoint returns associated hidden course runs
with the 'include_hidden_course_runs' flag set to True
"""
CourseRunFactory(
status=CourseRunStatus.Published,
end=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=10),
enrollment_start=None,
enrollment_end=None,
hidden=True,
course=self.course
)
url = reverse('api:v1:course-detail', kwargs={'key': self.course.key})
url += '?include_hidden_course_runs=1'
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(
response.data,
self.serialize_course(self.course)
)
@ddt.data(1, 0)
def test_marketable_course_runs_only(self, marketable_course_runs_only):
"""
......
......@@ -33,7 +33,10 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Course.search(q)
queryset = self.get_serializer_class().prefetch_queryset(queryset=queryset)
else:
course_runs = CourseRun.objects.exclude(hidden=True)
if get_query_param(self.request, 'include_hidden_course_runs'):
course_runs = CourseRun.objects.all()
else:
course_runs = CourseRun.objects.exclude(hidden=True)
if get_query_param(self.request, 'marketable_course_runs_only'):
course_runs = course_runs.marketable().active()
......@@ -82,6 +85,12 @@ class CourseViewSet(viewsets.ReadOnlyModelViewSet):
type: string
paramType: query
multiple: false
- name: include_hidden_course_runs
description: Include course runs that are hidden in the response.
required: false
type: integer
paramType: query
mulitple: false
- name: marketable_course_runs_only
description: Restrict returned course runs to those that are published, have seats,
and are enrollable or will be enrollable in the future
......
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