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:
Chris Pappas
2019-08-14 11:27:12 -04:00
committed by GitHub
parent 25bf85b9c5
commit 4829fd4fde
7 changed files with 268 additions and 128 deletions

View 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

View File

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

View File

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

View File

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