Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
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
edx-platform
Commits
237ef00a
Commit
237ef00a
authored
Oct 26, 2016
by
Mushtaq Ali
Committed by
muhammad-ammar
Nov 09, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
edxnotes stub server to support multiple usage id search - TNL-5605
parent
753d7821
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
11 deletions
+45
-11
common/djangoapps/terrain/stubs/edxnotes.py
+18
-6
common/djangoapps/terrain/stubs/tests/test_edxnotes.py
+27
-5
No files found.
common/djangoapps/terrain/stubs/edxnotes.py
View file @
237ef00a
...
...
@@ -243,8 +243,9 @@ class StubEdxNotesServiceHandler(StubHttpRequestHandler):
"""
Search for a notes by user id, course_id and usage_id.
"""
search_with_usage_id
=
False
user
=
self
.
get_params
.
get
(
"user"
,
None
)
usage_id
=
self
.
get_params
.
get
(
"usage_id"
,
None
)
usage_id
s
=
self
.
get_params
.
get
(
"usage_id"
,
[]
)
course_id
=
self
.
get_params
.
get
(
"course_id"
,
None
)
text
=
self
.
get_params
.
get
(
"text"
,
None
)
page
=
int
(
self
.
get_params
.
get
(
"page"
,
1
))
...
...
@@ -257,11 +258,14 @@ class StubEdxNotesServiceHandler(StubHttpRequestHandler):
notes
=
self
.
server
.
get_all_notes
()
if
course_id
is
not
None
:
notes
=
self
.
server
.
filter_by_course_id
(
notes
,
course_id
)
if
usage_id
is
not
None
:
notes
=
self
.
server
.
filter_by_usage_id
(
notes
,
usage_id
)
if
len
(
usage_ids
)
>
0
:
search_with_usage_id
=
True
notes
=
self
.
server
.
filter_by_usage_id
(
notes
,
usage_ids
)
if
text
:
notes
=
self
.
server
.
search
(
notes
,
text
)
self
.
respond
(
content
=
self
.
_get_paginated_response
(
notes
,
page
,
page_size
))
if
not
search_with_usage_id
:
notes
=
self
.
_get_paginated_response
(
notes
,
page
,
page_size
)
self
.
respond
(
content
=
notes
)
def
_collection
(
self
):
"""
...
...
@@ -356,11 +360,13 @@ class StubEdxNotesService(StubHttpService):
"""
return
self
.
filter_by
(
data
,
"user"
,
user
)
def
filter_by_usage_id
(
self
,
data
,
usage_id
):
def
filter_by_usage_id
(
self
,
data
,
usage_id
s
):
"""
Filters provided `data(list)` by the `usage_id(str)`.
"""
return
self
.
filter_by
(
data
,
"usage_id"
,
usage_id
)
if
not
isinstance
(
usage_ids
,
list
):
usage_ids
=
[
usage_ids
]
return
self
.
filter_by_list
(
data
,
"usage_id"
,
usage_ids
)
def
filter_by_course_id
(
self
,
data
,
course_id
):
"""
...
...
@@ -374,6 +380,12 @@ class StubEdxNotesService(StubHttpService):
"""
return
[
note
for
note
in
data
if
note
.
get
(
field_name
)
==
value
]
def
filter_by_list
(
self
,
data
,
field_name
,
values
):
"""
Filters provided `data(list)` by the `field_name(str)` in values.
"""
return
[
note
for
note
in
data
if
note
.
get
(
field_name
)
in
values
]
def
search
(
self
,
data
,
query
):
"""
Search the `query(str)` text in the provided `data(list)`.
...
...
common/djangoapps/terrain/stubs/tests/test_edxnotes.py
View file @
237ef00a
"""
Unit tests for stub EdxNotes implementation.
"""
import
ddt
import
urlparse
import
json
import
unittest
...
...
@@ -9,6 +10,7 @@ from uuid import uuid4
from
..edxnotes
import
StubEdxNotesService
@ddt.ddt
class
StubEdxNotesServiceTest
(
unittest
.
TestCase
):
"""
Test cases for the stub EdxNotes service.
...
...
@@ -27,9 +29,9 @@ class StubEdxNotesServiceTest(unittest.TestCase):
"""
Returns a list of dummy notes.
"""
return
[
self
.
_get_dummy_note
()
for
i
in
xrange
(
count
)]
# pylint: disable=unused-variable
return
[
self
.
_get_dummy_note
(
i
)
for
i
in
xrange
(
count
)]
# pylint: disable=unused-variable
def
_get_dummy_note
(
self
):
def
_get_dummy_note
(
self
,
uid
=
0
):
"""
Returns a single dummy note.
"""
...
...
@@ -39,7 +41,7 @@ class StubEdxNotesServiceTest(unittest.TestCase):
"created"
:
"2014-10-31T10:05:00.000000"
,
"updated"
:
"2014-10-31T10:50:00.101010"
,
"user"
:
"dummy-user-id"
,
"usage_id"
:
"dummy-usage-id
"
,
"usage_id"
:
"dummy-usage-id
-"
+
str
(
uid
)
,
"course_id"
:
"dummy-course-id"
,
"text"
:
"dummy note text "
+
nid
,
"quote"
:
"dummy note quote"
,
...
...
@@ -106,7 +108,6 @@ class StubEdxNotesServiceTest(unittest.TestCase):
# get response with default page and page size
response
=
requests
.
get
(
self
.
_get_url
(
"api/v1/search"
),
params
=
{
"user"
:
"dummy-user-id"
,
"usage_id"
:
"dummy-usage-id"
,
"course_id"
:
"dummy-course-id"
,
})
...
...
@@ -125,7 +126,6 @@ class StubEdxNotesServiceTest(unittest.TestCase):
# search notes with text that don't exist
response
=
requests
.
get
(
self
.
_get_url
(
"api/v1/search"
),
params
=
{
"user"
:
"dummy-user-id"
,
"usage_id"
:
"dummy-usage-id"
,
"course_id"
:
"dummy-course-id"
,
"text"
:
"world war 2"
})
...
...
@@ -142,6 +142,28 @@ class StubEdxNotesServiceTest(unittest.TestCase):
previous_page
=
None
)
@ddt.data
(
'?usage_id=dummy-usage-id-0'
,
'?usage_id=dummy-usage-id-0&usage_id=dummy-usage-id-1&dummy-usage-id-2&dummy-usage-id-3&dummy-usage-id-4'
)
def
test_search_usage_ids
(
self
,
usage_ids
):
"""
Test search with usage ids.
"""
url
=
self
.
_get_url
(
'api/v1/search'
)
+
usage_ids
response
=
requests
.
get
(
url
,
params
=
{
'user'
:
'dummy-user-id'
,
'course_id'
:
'dummy-course-id'
})
self
.
assertTrue
(
response
.
ok
)
response
=
response
.
json
()
parsed
=
urlparse
.
urlparse
(
url
)
query_params
=
urlparse
.
parse_qs
(
parsed
.
query
)
query_params
[
'usage_id'
]
.
reverse
()
self
.
assertEqual
(
len
(
response
),
len
(
query_params
[
'usage_id'
]))
for
index
,
usage_id
in
enumerate
(
query_params
[
'usage_id'
]):
self
.
assertEqual
(
response
[
index
][
'usage_id'
],
usage_id
)
def
test_delete
(
self
):
notes
=
self
.
_get_notes
()
response
=
requests
.
delete
(
self
.
_get_url
(
"api/v1/annotations/does_not_exist"
))
...
...
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