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
bf21211b
Commit
bf21211b
authored
May 08, 2013
by
Arthur Barrett
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding some tests
parent
1eb05cfd
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
125 additions
and
13 deletions
+125
-13
lms/djangoapps/notes/api.py
+1
-1
lms/djangoapps/notes/tests.py
+120
-10
lms/djangoapps/notes/utils.py
+4
-2
No files found.
lms/djangoapps/notes/api.py
View file @
bf21211b
...
...
@@ -11,7 +11,7 @@ log = logging.getLogger(__name__)
API_SETTINGS
=
{
# Version
'META'
:
{
'name'
:
'Notes API'
,
'version'
:
'1.0'
},
'META'
:
{
'name'
:
'Notes API'
,
'version'
:
1
},
# Maps resources to HTTP methods
'RESOURCE_MAP'
:
{
...
...
lms/djangoapps/notes/tests.py
View file @
bf21211b
"""
This file demonstrates writing tests using the unittest module. These will pass
when you run "manage.py test".
Replace this with more appropriate tests for your application.
Unit tests for the notes API and model.
"""
from
django.test
import
TestCase
from
django.test.client
import
Client
from
django.core.urlresolvers
import
reverse
from
django.contrib.auth.models
import
User
from
collections
import
namedtuple
from
random
import
random
import
json
import
logging
from
.
import
utils
,
api
,
models
logging
.
disable
(
logging
.
CRITICAL
)
# remove debugging from the log output
class
UtilsTest
(
TestCase
):
def
setUp
(
self
):
'''
Setup a dummy course-like object with a tabs field that can be
accessed via attribute lookup.
'''
self
.
course
=
namedtuple
(
'DummyCourse'
,
[
'tabs'
])
self
.
course
.
tabs
=
[]
def
test_notes_not_enabled
(
self
):
'''
Tests that notes are disabled when the course tab configuration does NOT
contain a tab with type "notes."
'''
self
.
assertFalse
(
utils
.
notes_enabled_for_course
(
self
.
course
))
def
test_notes_enabled
(
self
):
'''
Tests that notes are enabled when the course tab configuration contains
a tab with type "notes."
'''
self
.
course
.
tabs
=
[
{
'type'
:
'foo'
},
{
'name'
:
'My Notes'
,
'type'
:
'notes'
},
{
'type'
:
'bar'
}]
self
.
assertTrue
(
utils
.
notes_enabled_for_course
(
self
.
course
))
class
ApiTest
(
TestCase
):
def
setUp
(
self
):
self
.
client
=
Client
()
# Create two accounts
self
.
password
=
'abc'
self
.
student
=
User
.
objects
.
create_user
(
'student'
,
'student@test.com'
,
self
.
password
)
self
.
instructor
=
User
.
objects
.
create_user
(
'instructor'
,
'instructor@test.com'
,
self
.
password
)
self
.
course_id
=
'HarvardX/CB22x/The_Ancient_Greek_Hero'
self
.
note
=
{
'user'
:
self
.
student
,
'course_id'
:
self
.
course_id
,
'uri'
:
'/'
,
'text'
:
'foo'
,
'quote'
:
'bar'
,
'range_start'
:
0
,
'range_start_offset'
:
0
,
'range_end'
:
100
,
'range_end_offset'
:
0
,
'tags'
:
'a,b,c'
}
def
login
(
self
):
self
.
client
.
login
(
username
=
self
.
student
.
username
,
password
=
self
.
password
)
def
url
(
self
,
name
):
return
reverse
(
name
,
kwargs
=
{
'course_id'
:
self
.
course_id
})
def
create_notes
(
self
,
num_notes
):
notes
=
[
models
.
Note
(
**
self
.
note
)
for
n
in
range
(
num_notes
)
]
models
.
Note
.
objects
.
bulk_create
(
notes
)
return
notes
def
test_root
(
self
):
self
.
login
()
resp
=
self
.
client
.
get
(
self
.
url
(
'notes_api_root'
))
self
.
assertEqual
(
resp
.
status_code
,
200
)
self
.
assertNotEqual
(
resp
.
content
,
''
)
content
=
json
.
loads
(
resp
.
content
)
self
.
assertEqual
(
set
((
'name'
,
'version'
)),
set
(
content
.
keys
()))
self
.
assertIsInstance
(
content
[
'version'
],
int
)
self
.
assertEqual
(
content
[
'name'
],
'Notes API'
)
def
test_index_empty
(
self
):
self
.
login
()
resp
=
self
.
client
.
get
(
self
.
url
(
'notes_api_notes'
))
self
.
assertEqual
(
resp
.
status_code
,
200
)
self
.
assertNotEqual
(
resp
.
content
,
''
)
content
=
json
.
loads
(
resp
.
content
)
self
.
assertEqual
(
len
(
content
),
0
)
def
test_index_with_notes
(
self
):
num_notes
=
7
self
.
login
()
self
.
create_notes
(
num_notes
)
resp
=
self
.
client
.
get
(
self
.
url
(
'notes_api_notes'
))
self
.
assertEqual
(
resp
.
status_code
,
200
)
self
.
assertNotEqual
(
resp
.
content
,
''
)
content
=
json
.
loads
(
resp
.
content
)
self
.
assertEqual
(
len
(
content
),
num_notes
)
def
test_index_max_notes
(
self
):
self
.
login
()
MAX_LIMIT
=
api
.
API_SETTINGS
.
get
(
'MAX_NOTE_LIMIT'
)
num_notes
=
MAX_LIMIT
+
1
self
.
create_notes
(
num_notes
)
resp
=
self
.
client
.
get
(
self
.
url
(
'notes_api_notes'
))
self
.
assertEqual
(
resp
.
status_code
,
200
)
self
.
assertNotEqual
(
resp
.
content
,
''
)
class
SimpleTest
(
TestCase
):
def
test_basic_addition
(
self
):
"""
Tests that 1 + 1 always equals 2.
"""
self
.
assertEqual
(
1
+
1
,
2
)
content
=
json
.
loads
(
resp
.
content
)
self
.
assertEqual
(
len
(
content
),
MAX_LIMIT
)
lms/djangoapps/notes/utils.py
View file @
bf21211b
...
...
@@ -3,5 +3,7 @@ def notes_enabled_for_course(course):
Returns True if the notes app is enabled for the course, False otherwise.
'''
# TODO: create a separate policy setting to enable/disable notes
notes_tab_type
=
'notes'
return
next
((
True
for
tab
in
course
.
tabs
if
tab
[
'type'
]
==
notes_tab_type
),
False
)
tab_type
=
'notes'
tabs
=
course
.
tabs
tab_found
=
next
((
True
for
t
in
tabs
if
t
[
'type'
]
==
tab_type
),
False
)
return
tab_found
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