Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
b3b374db
Commit
b3b374db
authored
Mar 28, 2016
by
Clinton Blackburn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added courses_count field to Catalog model and API endpoint
ECOM-3973
parent
1f765698
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
14 deletions
+21
-14
course_discovery/apps/api/serializers.py
+1
-3
course_discovery/apps/api/tests/test_serializers.py
+6
-10
course_discovery/apps/catalogs/models.py
+4
-0
course_discovery/apps/catalogs/tests/factories.py
+1
-1
course_discovery/apps/catalogs/tests/test_models.py
+9
-0
No files found.
course_discovery/apps/api/serializers.py
View file @
b3b374db
...
@@ -6,11 +6,9 @@ from course_discovery.apps.course_metadata.models import Course
...
@@ -6,11 +6,9 @@ from course_discovery.apps.course_metadata.models import Course
class
CatalogSerializer
(
serializers
.
ModelSerializer
):
class
CatalogSerializer
(
serializers
.
ModelSerializer
):
url
=
serializers
.
HyperlinkedIdentityField
(
view_name
=
'api:v1:catalog-detail'
,
lookup_field
=
'id'
)
class
Meta
(
object
):
class
Meta
(
object
):
model
=
Catalog
model
=
Catalog
fields
=
(
'id'
,
'name'
,
'query'
,
'
url
'
,)
fields
=
(
'id'
,
'name'
,
'query'
,
'
courses_count
'
,)
class
CourseSerializer
(
serializers
.
ModelSerializer
):
class
CourseSerializer
(
serializers
.
ModelSerializer
):
...
...
course_discovery/apps/api/tests/test_serializers.py
View file @
b3b374db
from
django.core.urlresolvers
import
reverse
from
django.test
import
TestCase
from
django.test
import
TestCase
,
RequestFactory
from
course_discovery.apps.api.serializers
import
CatalogSerializer
,
CourseSerializer
,
ContainedCoursesSerializer
from
course_discovery.apps.api.serializers
import
CatalogSerializer
,
CourseSerializer
,
ContainedCoursesSerializer
from
course_discovery.apps.catalogs.tests.factories
import
CatalogFactory
from
course_discovery.apps.catalogs.tests.factories
import
CatalogFactory
...
@@ -8,16 +7,15 @@ from course_discovery.apps.course_metadata.tests.factories import CourseFactory
...
@@ -8,16 +7,15 @@ from course_discovery.apps.course_metadata.tests.factories import CourseFactory
class
CatalogSerializerTests
(
TestCase
):
class
CatalogSerializerTests
(
TestCase
):
def
test_data
(
self
):
def
test_data
(
self
):
catalog
=
CatalogFactory
()
catalog
=
CatalogFactory
(
query
=
'*:*'
)
# We intentionally use a query for all Courses.
path
=
reverse
(
'api:v1:catalog-detail'
,
kwargs
=
{
'id'
:
catalog
.
id
})
courses
=
CourseFactory
.
create_batch
(
10
)
request
=
RequestFactory
()
.
get
(
path
)
serializer
=
CatalogSerializer
(
catalog
)
serializer
=
CatalogSerializer
(
catalog
,
context
=
{
'request'
:
request
})
expected
=
{
expected
=
{
'id'
:
catalog
.
id
,
'id'
:
catalog
.
id
,
'name'
:
catalog
.
name
,
'name'
:
catalog
.
name
,
'query'
:
catalog
.
query
,
'query'
:
catalog
.
query
,
'
url'
:
request
.
build_absolute_uri
(),
'
courses_count'
:
len
(
courses
)
}
}
self
.
assertDictEqual
(
serializer
.
data
,
expected
)
self
.
assertDictEqual
(
serializer
.
data
,
expected
)
...
@@ -25,9 +23,7 @@ class CatalogSerializerTests(TestCase):
...
@@ -25,9 +23,7 @@ class CatalogSerializerTests(TestCase):
class
CourseSerializerTests
(
TestCase
):
class
CourseSerializerTests
(
TestCase
):
def
test_data
(
self
):
def
test_data
(
self
):
course
=
CourseFactory
()
course
=
CourseFactory
()
path
=
reverse
(
'api:v1:course-detail'
,
kwargs
=
{
'key'
:
course
.
key
})
serializer
=
CourseSerializer
(
course
)
request
=
RequestFactory
()
.
get
(
path
)
serializer
=
CourseSerializer
(
course
,
context
=
{
'request'
:
request
})
expected
=
{
expected
=
{
'key'
:
course
.
key
,
'key'
:
course
.
key
,
...
...
course_discovery/apps/catalogs/models.py
View file @
b3b374db
...
@@ -32,6 +32,10 @@ class Catalog(ModelPermissionsMixin, TimeStampedModel):
...
@@ -32,6 +32,10 @@ class Catalog(ModelPermissionsMixin, TimeStampedModel):
results
=
self
.
_get_query_results
()
.
load_all
()
results
=
self
.
_get_query_results
()
.
load_all
()
return
[
result
.
object
for
result
in
results
]
return
[
result
.
object
for
result
in
results
]
@property
def
courses_count
(
self
):
return
self
.
_get_query_results
()
.
count
()
def
contains
(
self
,
course_ids
):
# pylint: disable=unused-argument
def
contains
(
self
,
course_ids
):
# pylint: disable=unused-argument
""" Determines if the given courses are contained in this catalog.
""" Determines if the given courses are contained in this catalog.
...
...
course_discovery/apps/catalogs/tests/factories.py
View file @
b3b374db
...
@@ -9,4 +9,4 @@ class CatalogFactory(factory.DjangoModelFactory):
...
@@ -9,4 +9,4 @@ class CatalogFactory(factory.DjangoModelFactory):
model
=
Catalog
model
=
Catalog
name
=
FuzzyText
(
prefix
=
'catalog-name-'
)
name
=
FuzzyText
(
prefix
=
'catalog-name-'
)
query
=
'
{"query": {"match_all": {}}}
'
query
=
'
*:*
'
course_discovery/apps/catalogs/tests/test_models.py
View file @
b3b374db
...
@@ -34,3 +34,12 @@ class CatalogTests(ElasticsearchTestMixin, TestCase):
...
@@ -34,3 +34,12 @@ class CatalogTests(ElasticsearchTestMixin, TestCase):
self
.
catalog
.
contains
([
self
.
course
.
key
,
uncontained_course
.
key
]),
self
.
catalog
.
contains
([
self
.
course
.
key
,
uncontained_course
.
key
]),
{
self
.
course
.
key
:
True
,
uncontained_course
.
key
:
False
}
{
self
.
course
.
key
:
True
,
uncontained_course
.
key
:
False
}
)
)
def
test_courses_count
(
self
):
""" Verify the method returns the number of courses contained in the Catalog. """
self
.
assertEqual
(
self
.
catalog
.
courses_count
,
1
)
# Create a new course that should NOT be contained in the catalog, and one that should
CourseFactory
()
CourseFactory
(
title
=
'ABCDEF'
)
self
.
assertEqual
(
self
.
catalog
.
courses_count
,
2
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment