ENT-2117 | Creating new endpoint for enterprise learner portal. Includes small refactor of programs_enrollment GET logic, sowe do not need to duplicate the logic (#21258)
Adding new course_overview internal api CourseOverview serializer work Removing enterprise learner portal djangoapp from this repo Removing ent learner portal url Minor cleanups Updating serializers again typo adding some tests and quality fixes more quality fixes Fixing test Adding in an import i removed
This commit is contained in:
17
openedx/core/djangoapps/content/course_overviews/api.py
Normal file
17
openedx/core/djangoapps/content/course_overviews/api.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
CourseOverview internal api
|
||||
"""
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
|
||||
from openedx.core.djangoapps.content.course_overviews.serializers import (
|
||||
CourseOverviewBaseSerializer,
|
||||
)
|
||||
|
||||
|
||||
def get_course_overviews(course_ids):
|
||||
"""
|
||||
Return course_overview data for a given list of opaque_key course_ids.
|
||||
"""
|
||||
overviews = CourseOverview.objects.filter(id__in=course_ids)
|
||||
return CourseOverviewBaseSerializer(overviews, many=True).data
|
||||
@@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
CourseOverview serializers
|
||||
"""
|
||||
from rest_framework import serializers
|
||||
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
|
||||
|
||||
class CourseOverviewBaseSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Serializer for a course run overview.
|
||||
"""
|
||||
|
||||
class Meta(object):
|
||||
model = CourseOverview
|
||||
fields = '__all__'
|
||||
|
||||
def to_representation(self, instance):
|
||||
representation = super(CourseOverviewBaseSerializer, self).to_representation(instance)
|
||||
representation['display_name_with_default'] = instance.display_name_with_default
|
||||
representation['has_started'] = instance.has_started
|
||||
representation['has_ended'] = instance.has_ended
|
||||
representation['pacing'] = instance.pacing
|
||||
return representation
|
||||
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
course_overview api tests
|
||||
"""
|
||||
from django.test import TestCase
|
||||
|
||||
from openedx.core.djangoapps.content.course_overviews.api import get_course_overviews
|
||||
from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory
|
||||
|
||||
from ..models import CourseOverview
|
||||
|
||||
|
||||
class TestCourseOverviewsApi(TestCase):
|
||||
"""
|
||||
TestCourseOverviewsApi tests.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestCourseOverviewsApi, self).setUp()
|
||||
for _ in range(3):
|
||||
CourseOverviewFactory.create()
|
||||
|
||||
def test_get_course_overviews(self):
|
||||
"""
|
||||
get_course_overviews should return the expected CourseOverview data
|
||||
in serialized form (a list of dicts)
|
||||
"""
|
||||
course_ids = []
|
||||
course_ids.append(str(CourseOverview.objects.first().id))
|
||||
course_ids.append(str(CourseOverview.objects.last().id))
|
||||
|
||||
data = get_course_overviews(course_ids)
|
||||
assert len(data) == 2
|
||||
for overview in data:
|
||||
assert overview['id'] in course_ids
|
||||
|
||||
fields = [
|
||||
'display_name_with_default',
|
||||
'has_started',
|
||||
'has_ended',
|
||||
'pacing',
|
||||
]
|
||||
for field in fields:
|
||||
assert field in data[0]
|
||||
@@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
CourseOverviewSerializer tests
|
||||
"""
|
||||
from django.test import TestCase
|
||||
|
||||
from openedx.core.djangoapps.content.course_overviews.serializers import CourseOverviewBaseSerializer
|
||||
from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory
|
||||
|
||||
from ..models import CourseOverview
|
||||
|
||||
|
||||
class TestCourseOverviewSerializer(TestCase):
|
||||
"""
|
||||
TestCourseOverviewSerializer tests.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestCourseOverviewSerializer, self).setUp()
|
||||
CourseOverviewFactory.create()
|
||||
|
||||
def test_get_course_overview_serializer(self):
|
||||
"""
|
||||
CourseOverviewBaseSerializer should add additional fields in the
|
||||
to_representation method that is overridden.
|
||||
"""
|
||||
overview = CourseOverview.objects.first()
|
||||
data = CourseOverviewBaseSerializer(overview).data
|
||||
|
||||
fields = [
|
||||
'display_name_with_default',
|
||||
'has_started',
|
||||
'has_ended',
|
||||
'pacing',
|
||||
]
|
||||
for field in fields:
|
||||
assert field in data
|
||||
Reference in New Issue
Block a user