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
Show 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):
...
@@ -243,8 +243,9 @@ class StubEdxNotesServiceHandler(StubHttpRequestHandler):
"""
"""
Search for a notes by user id, course_id and usage_id.
Search for a notes by user id, course_id and usage_id.
"""
"""
search_with_usage_id
=
False
user
=
self
.
get_params
.
get
(
"user"
,
None
)
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
)
course_id
=
self
.
get_params
.
get
(
"course_id"
,
None
)
text
=
self
.
get_params
.
get
(
"text"
,
None
)
text
=
self
.
get_params
.
get
(
"text"
,
None
)
page
=
int
(
self
.
get_params
.
get
(
"page"
,
1
))
page
=
int
(
self
.
get_params
.
get
(
"page"
,
1
))
...
@@ -257,11 +258,14 @@ class StubEdxNotesServiceHandler(StubHttpRequestHandler):
...
@@ -257,11 +258,14 @@ class StubEdxNotesServiceHandler(StubHttpRequestHandler):
notes
=
self
.
server
.
get_all_notes
()
notes
=
self
.
server
.
get_all_notes
()
if
course_id
is
not
None
:
if
course_id
is
not
None
:
notes
=
self
.
server
.
filter_by_course_id
(
notes
,
course_id
)
notes
=
self
.
server
.
filter_by_course_id
(
notes
,
course_id
)
if
usage_id
is
not
None
:
if
len
(
usage_ids
)
>
0
:
notes
=
self
.
server
.
filter_by_usage_id
(
notes
,
usage_id
)
search_with_usage_id
=
True
notes
=
self
.
server
.
filter_by_usage_id
(
notes
,
usage_ids
)
if
text
:
if
text
:
notes
=
self
.
server
.
search
(
notes
,
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
):
def
_collection
(
self
):
"""
"""
...
@@ -356,11 +360,13 @@ class StubEdxNotesService(StubHttpService):
...
@@ -356,11 +360,13 @@ class StubEdxNotesService(StubHttpService):
"""
"""
return
self
.
filter_by
(
data
,
"user"
,
user
)
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)`.
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
):
def
filter_by_course_id
(
self
,
data
,
course_id
):
"""
"""
...
@@ -374,6 +380,12 @@ class StubEdxNotesService(StubHttpService):
...
@@ -374,6 +380,12 @@ class StubEdxNotesService(StubHttpService):
"""
"""
return
[
note
for
note
in
data
if
note
.
get
(
field_name
)
==
value
]
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
):
def
search
(
self
,
data
,
query
):
"""
"""
Search the `query(str)` text in the provided `data(list)`.
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.
Unit tests for stub EdxNotes implementation.
"""
"""
import
ddt
import
urlparse
import
urlparse
import
json
import
json
import
unittest
import
unittest
...
@@ -9,6 +10,7 @@ from uuid import uuid4
...
@@ -9,6 +10,7 @@ from uuid import uuid4
from
..edxnotes
import
StubEdxNotesService
from
..edxnotes
import
StubEdxNotesService
@ddt.ddt
class
StubEdxNotesServiceTest
(
unittest
.
TestCase
):
class
StubEdxNotesServiceTest
(
unittest
.
TestCase
):
"""
"""
Test cases for the stub EdxNotes service.
Test cases for the stub EdxNotes service.
...
@@ -27,9 +29,9 @@ class StubEdxNotesServiceTest(unittest.TestCase):
...
@@ -27,9 +29,9 @@ class StubEdxNotesServiceTest(unittest.TestCase):
"""
"""
Returns a list of dummy notes.
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.
Returns a single dummy note.
"""
"""
...
@@ -39,7 +41,7 @@ class StubEdxNotesServiceTest(unittest.TestCase):
...
@@ -39,7 +41,7 @@ class StubEdxNotesServiceTest(unittest.TestCase):
"created"
:
"2014-10-31T10:05:00.000000"
,
"created"
:
"2014-10-31T10:05:00.000000"
,
"updated"
:
"2014-10-31T10:50:00.101010"
,
"updated"
:
"2014-10-31T10:50:00.101010"
,
"user"
:
"dummy-user-id"
,
"user"
:
"dummy-user-id"
,
"usage_id"
:
"dummy-usage-id
"
,
"usage_id"
:
"dummy-usage-id
-"
+
str
(
uid
)
,
"course_id"
:
"dummy-course-id"
,
"course_id"
:
"dummy-course-id"
,
"text"
:
"dummy note text "
+
nid
,
"text"
:
"dummy note text "
+
nid
,
"quote"
:
"dummy note quote"
,
"quote"
:
"dummy note quote"
,
...
@@ -106,7 +108,6 @@ class StubEdxNotesServiceTest(unittest.TestCase):
...
@@ -106,7 +108,6 @@ class StubEdxNotesServiceTest(unittest.TestCase):
# get response with default page and page size
# get response with default page and page size
response
=
requests
.
get
(
self
.
_get_url
(
"api/v1/search"
),
params
=
{
response
=
requests
.
get
(
self
.
_get_url
(
"api/v1/search"
),
params
=
{
"user"
:
"dummy-user-id"
,
"user"
:
"dummy-user-id"
,
"usage_id"
:
"dummy-usage-id"
,
"course_id"
:
"dummy-course-id"
,
"course_id"
:
"dummy-course-id"
,
})
})
...
@@ -125,7 +126,6 @@ class StubEdxNotesServiceTest(unittest.TestCase):
...
@@ -125,7 +126,6 @@ class StubEdxNotesServiceTest(unittest.TestCase):
# search notes with text that don't exist
# search notes with text that don't exist
response
=
requests
.
get
(
self
.
_get_url
(
"api/v1/search"
),
params
=
{
response
=
requests
.
get
(
self
.
_get_url
(
"api/v1/search"
),
params
=
{
"user"
:
"dummy-user-id"
,
"user"
:
"dummy-user-id"
,
"usage_id"
:
"dummy-usage-id"
,
"course_id"
:
"dummy-course-id"
,
"course_id"
:
"dummy-course-id"
,
"text"
:
"world war 2"
"text"
:
"world war 2"
})
})
...
@@ -142,6 +142,28 @@ class StubEdxNotesServiceTest(unittest.TestCase):
...
@@ -142,6 +142,28 @@ class StubEdxNotesServiceTest(unittest.TestCase):
previous_page
=
None
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
):
def
test_delete
(
self
):
notes
=
self
.
_get_notes
()
notes
=
self
.
_get_notes
()
response
=
requests
.
delete
(
self
.
_get_url
(
"api/v1/annotations/does_not_exist"
))
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