Commit 7ec10b5c by Matthew Piatetsky Committed by GitHub

Merge pull request #371 from edx/course_ordering_bugfix

ECOM-5961 Fix course ordering bug
parents a0ccf5e9 aa997da3
...@@ -536,7 +536,7 @@ class MinimalProgramSerializer(serializers.ModelSerializer): ...@@ -536,7 +536,7 @@ class MinimalProgramSerializer(serializers.ModelSerializer):
if program.order_courses_by_start_date: if program.order_courses_by_start_date:
courses, course_runs = self.sort_courses(program) courses, course_runs = self.sort_courses(program)
else: else:
courses, course_runs = program.courses.all(), program.course_runs courses, course_runs = program.courses.all(), list(program.course_runs)
course_serializer = MinimalProgramCourseSerializer( course_serializer = MinimalProgramCourseSerializer(
courses, courses,
......
...@@ -370,7 +370,7 @@ class MinimalProgramCourseSerializerTests(TestCase): ...@@ -370,7 +370,7 @@ class MinimalProgramCourseSerializerTests(TestCase):
context={ context={
'request': request, 'request': request,
'program': program, 'program': program,
'course_runs': program.course_runs 'course_runs': list(program.course_runs)
} }
) )
expected = MinimalCourseSerializer(program.courses, many=True, context={'request': request}).data expected = MinimalCourseSerializer(program.courses, many=True, context={'request': request}).data
...@@ -399,7 +399,7 @@ class MinimalProgramCourseSerializerTests(TestCase): ...@@ -399,7 +399,7 @@ class MinimalProgramCourseSerializerTests(TestCase):
excluded_runs.append(course_runs[0]) excluded_runs.append(course_runs[0])
program = ProgramFactory(courses=[course], excluded_course_runs=excluded_runs) program = ProgramFactory(courses=[course], excluded_course_runs=excluded_runs)
serializer_context = {'request': request, 'program': program, 'course_runs': program.course_runs} serializer_context = {'request': request, 'program': program, 'course_runs': list(program.course_runs)}
serializer = MinimalProgramCourseSerializer(course, context=serializer_context) serializer = MinimalProgramCourseSerializer(course, context=serializer_context)
expected = MinimalCourseSerializer(course, context=serializer_context).data expected = MinimalCourseSerializer(course, context=serializer_context).data
...@@ -428,7 +428,7 @@ class MinimalProgramCourseSerializerTests(TestCase): ...@@ -428,7 +428,7 @@ class MinimalProgramCourseSerializerTests(TestCase):
'request': request, 'request': request,
'program': program, 'program': program,
'published_course_runs_only': True, 'published_course_runs_only': True,
'course_runs': program.course_runs, 'course_runs': list(program.course_runs),
} }
) )
...@@ -478,7 +478,7 @@ class MinimalProgramSerializerTests(TestCase): ...@@ -478,7 +478,7 @@ class MinimalProgramSerializerTests(TestCase):
context={ context={
'request': request, 'request': request,
'program': program, 'program': program,
'course_runs': program.course_runs, 'course_runs': list(program.course_runs),
}).data, }).data,
'authoring_organizations': MinimalOrganizationSerializer(program.authoring_organizations, many=True).data, 'authoring_organizations': MinimalOrganizationSerializer(program.authoring_organizations, many=True).data,
'card_image_url': program.card_image_url, 'card_image_url': program.card_image_url,
...@@ -518,7 +518,7 @@ class ProgramSerializerTests(MinimalProgramSerializerTests): ...@@ -518,7 +518,7 @@ class ProgramSerializerTests(MinimalProgramSerializerTests):
'overview': program.overview, 'overview': program.overview,
'price_ranges': program.price_ranges, 'price_ranges': program.price_ranges,
'subjects': SubjectSerializer(program.subjects, many=True).data, 'subjects': SubjectSerializer(program.subjects, many=True).data,
'transcript_languages': [serialize_language_to_code(l) for l in program.transcript_languages], 'transcript_languages': [serialize_language_to_code(l) for l in program.transcript_languages]
}) })
return expected return expected
...@@ -670,9 +670,11 @@ class ProgramSerializerTests(MinimalProgramSerializerTests): ...@@ -670,9 +670,11 @@ class ProgramSerializerTests(MinimalProgramSerializerTests):
def test_data_without_course_sorting(self): def test_data_without_course_sorting(self):
request = make_request() request = make_request()
program = self.create_program() program = self.create_program()
program.order_courses_by_start_date = False program.order_courses_by_start_date = False
program.save() program.save()
serializer = self.serializer_class(program, context={'request': request}) serializer = self.serializer_class(program, context={'request': request})
expected = self.get_expected_data(program, request) expected = self.get_expected_data(program, request)
self.assertDictEqual(serializer.data, expected) self.assertDictEqual(serializer.data, expected)
...@@ -985,7 +987,7 @@ class ProgramSearchSerializerTests(TestCase): ...@@ -985,7 +987,7 @@ class ProgramSearchSerializerTests(TestCase):
'partner': program.partner.short_code, 'partner': program.partner.short_code,
'authoring_organization_uuids': get_uuids(program.authoring_organizations.all()), 'authoring_organization_uuids': get_uuids(program.authoring_organizations.all()),
'subject_uuids': get_uuids([course.subjects for course in program.courses.all()]), 'subject_uuids': get_uuids([course.subjects for course in program.courses.all()]),
'staff_uuids': get_uuids([course.staff for course in program.course_runs]) 'staff_uuids': get_uuids([course.staff for course in list(program.course_runs)])
} }
def test_data(self): def test_data(self):
......
...@@ -77,8 +77,7 @@ class ProgramViewSetTests(SerializationMixin, APITestCase): ...@@ -77,8 +77,7 @@ class ProgramViewSetTests(SerializationMixin, APITestCase):
for course in course_list: for course in course_list:
CourseRunFactory(course=course) CourseRunFactory(course=course)
program = ProgramFactory(courses=course_list, order_courses_by_start_date=order_courses_by_start_date) program = ProgramFactory(courses=course_list, order_courses_by_start_date=order_courses_by_start_date)
num_queries = 82 if order_courses_by_start_date else 80 with self.assertNumQueries(82):
with self.assertNumQueries(num_queries):
self.assert_retrieve_success(program) self.assert_retrieve_success(program)
self.assertEqual(course_list, list(program.courses.all())) # pylint: disable=no-member self.assertEqual(course_list, list(program.courses.all())) # pylint: disable=no-member
......
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