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
b0a01819
Commit
b0a01819
authored
Mar 05, 2013
by
Jay Zoldak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pep8 fixes for tests
parent
cee24c5c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
167 additions
and
178 deletions
+167
-178
lms/djangoapps/courseware/tests/test_access.py
+5
-6
lms/djangoapps/courseware/tests/test_module_render.py
+50
-47
lms/djangoapps/courseware/tests/test_progress.py
+52
-53
lms/djangoapps/courseware/tests/test_views.py
+17
-14
lms/djangoapps/courseware/tests/tests.py
+43
-58
No files found.
lms/djangoapps/courseware/tests/test_access.py
View file @
b0a01819
import
unittest
import
logging
import
logging
import
time
from
mock
import
Mock
,
MagicMock
,
patch
from
django.conf
import
settings
from
django.test
import
TestCase
from
xmodule.course_module
import
CourseDescriptor
from
xmodule.error_module
import
ErrorDescriptor
from
xmodule.modulestore
import
Location
from
xmodule.timeparse
import
parse_time
from
xmodule.course_module
import
CourseDescriptor
from
xmodule.error_module
import
ErrorDescriptor
from
xmodule.modulestore
import
Location
from
xmodule.timeparse
import
parse_time
from
xmodule.x_module
import
XModule
,
XModuleDescriptor
import
courseware.access
as
access
from
factories
import
CourseEnrollmentAllowedFactory
class
AccessTestCase
(
TestCase
):
def
test__has_global_staff_access
(
self
):
u
=
Mock
(
is_staff
=
False
)
...
...
lms/djangoapps/courseware/tests/test_module_render.py
View file @
b0a01819
This diff is collapsed.
Click to expand it.
lms/djangoapps/courseware/tests/test_progress.py
View file @
b0a01819
from
django.test
import
TestCase
from
django.test
import
TestCase
from
courseware
import
progress
from
mock
import
MagicMock
class
ProgessTests
(
TestCase
):
def
setUp
(
self
):
self
.
d
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
4
,
'questions_incorrect'
:
0
,
'questions_total'
:
0
})
self
.
c
=
progress
.
completion
()
self
.
c2
=
progress
.
completion
()
self
.
c2
.
dict
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
2
,
'questions_incorrect'
:
1
,
'questions_total'
:
0
})
self
.
cplusc2
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
2
,
'questions_incorrect'
:
1
,
'questions_total'
:
0
})
self
.
oth
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
4
,
'questions_incorrect'
:
0
,
'questions_total'
:
7
})
self
.
x
=
MagicMock
()
self
.
x
.
dict
=
self
.
oth
self
.
d_oth
=
{
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
4
,
'questions_incorrect'
:
0
,
'questions_total'
:
7
}
def
test_getitem
(
self
):
self
.
assertEqual
(
self
.
c
.
__getitem__
(
'duration_watched'
),
0
)
def
test_setitem
(
self
):
self
.
c
.
__setitem__
(
'questions_correct'
,
4
)
self
.
assertEqual
(
str
(
self
.
c
),
str
(
self
.
d
))
def
test_repr
(
self
):
self
.
assertEqual
(
self
.
c
.
__repr__
(),
str
(
progress
.
completion
()))
def
setUp
(
self
):
self
.
d
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
4
,
'questions_incorrect'
:
0
,
'questions_total'
:
0
})
self
.
c
=
progress
.
completion
()
self
.
c2
=
progress
.
completion
()
self
.
c2
.
dict
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
2
,
'questions_incorrect'
:
1
,
'questions_total'
:
0
})
self
.
cplusc2
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
2
,
'questions_incorrect'
:
1
,
'questions_total'
:
0
})
self
.
oth
=
dict
({
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
4
,
'questions_incorrect'
:
0
,
'questions_total'
:
7
})
self
.
x
=
MagicMock
()
self
.
x
.
dict
=
self
.
oth
self
.
d_oth
=
{
'duration_total'
:
0
,
'duration_watched'
:
0
,
'done'
:
True
,
'questions_correct'
:
4
,
'questions_incorrect'
:
0
,
'questions_total'
:
7
}
def
test_getitem
(
self
):
self
.
assertEqual
(
self
.
c
.
__getitem__
(
'duration_watched'
),
0
)
def
test_setitem
(
self
):
self
.
c
.
__setitem__
(
'questions_correct'
,
4
)
self
.
assertEqual
(
str
(
self
.
c
),
str
(
self
.
d
))
def
test_repr
(
self
):
self
.
assertEqual
(
self
.
c
.
__repr__
(),
str
(
progress
.
completion
()))
lms/djangoapps/courseware/tests/test_views.py
View file @
b0a01819
...
...
@@ -15,12 +15,13 @@ from django.test.client import RequestFactory
from
student.models
import
CourseEnrollment
from
xmodule.modulestore.django
import
modulestore
,
_MODULESTORES
from
xmodule.modulestore.exceptions
import
InvalidLocationError
,
\
ItemNotFoundError
,
NoPathToItem
ItemNotFoundError
,
NoPathToItem
import
courseware.views
as
views
from
xmodule.modulestore
import
Location
from
factories
import
UserFactory
class
Stub
():
pass
...
...
@@ -28,18 +29,19 @@ class Stub():
# This part is required for modulestore() to work properly
def
xml_store_config
(
data_dir
):
return
{
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.xml.XMLModuleStore'
,
'OPTIONS'
:
{
'data_dir'
:
data_dir
,
'default_class'
:
'xmodule.hidden_module.HiddenDescriptor'
,
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.xml.XMLModuleStore'
,
'OPTIONS'
:
{
'data_dir'
:
data_dir
,
'default_class'
:
'xmodule.hidden_module.HiddenDescriptor'
,
}
}
}
}
TEST_DATA_DIR
=
settings
.
COMMON_TEST_DATA_ROOT
TEST_DATA_XML_MODULESTORE
=
xml_store_config
(
TEST_DATA_DIR
)
@override_settings
(
MODULESTORE
=
TEST_DATA_XML_MODULESTORE
)
class
TestJumpTo
(
TestCase
):
"""Check the jumpto link for a course"""
...
...
@@ -64,15 +66,16 @@ class TestJumpTo(TestCase):
response
=
self
.
client
.
get
(
jumpto_url
)
self
.
assertRedirects
(
response
,
expected
,
status_code
=
302
,
target_status_code
=
302
)
class
ViewsTestCase
(
TestCase
):
def
setUp
(
self
):
self
.
user
=
User
.
objects
.
create
(
username
=
'dummy'
,
password
=
'123456'
,
email
=
'test@mit.edu'
)
self
.
date
=
datetime
.
datetime
(
2013
,
1
,
22
)
self
.
date
=
datetime
.
datetime
(
2013
,
1
,
22
)
self
.
course_id
=
'edX/toy/2012_Fall'
self
.
enrollment
=
CourseEnrollment
.
objects
.
get_or_create
(
user
=
self
.
user
,
course_id
=
self
.
course_id
,
created
=
self
.
date
)[
0
]
self
.
enrollment
=
CourseEnrollment
.
objects
.
get_or_create
(
user
=
self
.
user
,
course_id
=
self
.
course_id
,
created
=
self
.
date
)[
0
]
self
.
location
=
[
'tag'
,
'org'
,
'course'
,
'category'
,
'name'
]
self
.
_MODULESTORES
=
{}
# This is a CourseDescriptor object
...
...
@@ -85,13 +88,13 @@ class ViewsTestCase(TestCase):
# depreciated function
mock_user
=
MagicMock
()
mock_user
.
is_authenticated
.
return_value
=
False
self
.
assertEquals
(
views
.
user_groups
(
mock_user
),[])
self
.
assertEquals
(
views
.
user_groups
(
mock_user
),
[])
def
test_get_current_child
(
self
):
self
.
assertIsNone
(
views
.
get_current_child
(
Stub
()))
mock_xmodule
=
MagicMock
()
mock_xmodule
.
position
=
-
1
mock_xmodule
.
get_display_items
.
return_value
=
[
'one'
,
'two'
]
mock_xmodule
.
get_display_items
.
return_value
=
[
'one'
,
'two'
]
self
.
assertEquals
(
views
.
get_current_child
(
mock_xmodule
),
'one'
)
mock_xmodule_2
=
MagicMock
()
mock_xmodule_2
.
position
=
3
...
...
lms/djangoapps/courseware/tests/tests.py
View file @
b0a01819
...
...
@@ -53,46 +53,46 @@ def registration(email):
def
mongo_store_config
(
data_dir
):
return
{
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.mongo.MongoModuleStore'
,
'OPTIONS'
:
{
'default_class'
:
'xmodule.raw_module.RawDescriptor'
,
'host'
:
'localhost'
,
'db'
:
'test_xmodule'
,
'collection'
:
'modulestore'
,
'fs_root'
:
data_dir
,
'render_template'
:
'mitxmako.shortcuts.render_to_string'
,
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.mongo.MongoModuleStore'
,
'OPTIONS'
:
{
'default_class'
:
'xmodule.raw_module.RawDescriptor'
,
'host'
:
'localhost'
,
'db'
:
'test_xmodule'
,
'collection'
:
'modulestore'
,
'fs_root'
:
data_dir
,
'render_template'
:
'mitxmako.shortcuts.render_to_string'
,
}
}
}
}
def
draft_mongo_store_config
(
data_dir
):
return
{
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.mongo.DraftMongoModuleStore'
,
'OPTIONS'
:
{
'default_class'
:
'xmodule.raw_module.RawDescriptor'
,
'host'
:
'localhost'
,
'db'
:
'test_xmodule'
,
'collection'
:
'modulestore'
,
'fs_root'
:
data_dir
,
'render_template'
:
'mitxmako.shortcuts.render_to_string'
,
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.mongo.DraftMongoModuleStore'
,
'OPTIONS'
:
{
'default_class'
:
'xmodule.raw_module.RawDescriptor'
,
'host'
:
'localhost'
,
'db'
:
'test_xmodule'
,
'collection'
:
'modulestore'
,
'fs_root'
:
data_dir
,
'render_template'
:
'mitxmako.shortcuts.render_to_string'
,
}
}
}
}
def
xml_store_config
(
data_dir
):
return
{
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.xml.XMLModuleStore'
,
'OPTIONS'
:
{
'data_dir'
:
data_dir
,
'default_class'
:
'xmodule.hidden_module.HiddenDescriptor'
,
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.xml.XMLModuleStore'
,
'OPTIONS'
:
{
'data_dir'
:
data_dir
,
'default_class'
:
'xmodule.hidden_module.HiddenDescriptor'
,
}
}
}
}
TEST_DATA_DIR
=
settings
.
COMMON_TEST_DATA_ROOT
TEST_DATA_XML_MODULESTORE
=
xml_store_config
(
TEST_DATA_DIR
)
...
...
@@ -115,8 +115,7 @@ class ActivateLoginTestCase(TestCase):
'Response status code was {0} instead of 302'
.
format
(
response
.
status_code
))
url
=
response
[
'Location'
]
e_scheme
,
e_netloc
,
e_path
,
e_query
,
e_fragment
=
urlsplit
(
expected_url
)
e_scheme
,
e_netloc
,
e_path
,
e_query
,
e_fragment
=
urlsplit
(
expected_url
)
if
not
(
e_scheme
or
e_netloc
):
expected_url
=
urlunsplit
((
'http'
,
'testserver'
,
e_path
,
e_query
,
e_fragment
))
...
...
@@ -211,7 +210,7 @@ class PageLoader(ActivateLoginTestCase):
resp
=
self
.
client
.
post
(
'/change_enrollment'
,
{
'enrollment_action'
:
'enroll'
,
'course_id'
:
course
.
id
,
})
})
return
parse_json
(
resp
)
def
try_enroll
(
self
,
course
):
...
...
@@ -230,11 +229,10 @@ class PageLoader(ActivateLoginTestCase):
resp
=
self
.
client
.
post
(
'/change_enrollment'
,
{
'enrollment_action'
:
'unenroll'
,
'course_id'
:
course
.
id
,
})
})
data
=
parse_json
(
resp
)
self
.
assertTrue
(
data
[
'success'
])
def
check_for_get_code
(
self
,
code
,
url
):
"""
Check that we got the expected code when accessing url via GET.
...
...
@@ -246,7 +244,6 @@ class PageLoader(ActivateLoginTestCase):
.
format
(
resp
.
status_code
,
url
,
code
))
return
resp
def
check_for_post_code
(
self
,
code
,
url
,
data
=
{}):
"""
Check that we got the expected code when accessing url via POST.
...
...
@@ -258,12 +255,8 @@ class PageLoader(ActivateLoginTestCase):
.
format
(
resp
.
status_code
,
url
,
code
))
return
resp
def
check_pages_load
(
self
,
module_store
):
"""Make all locations in course load"""
# enroll in the course before trying to access pages
courses
=
module_store
.
get_courses
()
self
.
assertEqual
(
len
(
courses
),
1
)
...
...
@@ -316,7 +309,7 @@ class PageLoader(ActivateLoginTestCase):
msg
=
str
(
resp
.
status_code
)
if
resp
.
status_code
!=
200
:
msg
=
"ERROR "
+
msg
+
": "
+
descriptor
.
location
.
url
()
msg
=
"ERROR "
+
msg
+
": "
+
descriptor
.
location
.
url
()
all_ok
=
False
num_bad
+=
1
elif
resp
.
redirect_chain
[
0
][
1
]
!=
302
:
...
...
@@ -344,7 +337,6 @@ class PageLoader(ActivateLoginTestCase):
self
.
assertTrue
(
all_ok
)
@override_settings
(
MODULESTORE
=
TEST_DATA_XML_MODULESTORE
)
class
TestCoursesLoadTestCase_XmlModulestore
(
PageLoader
):
'''Check that all pages in test courses load properly'''
...
...
@@ -355,21 +347,21 @@ class TestCoursesLoadTestCase_XmlModulestore(PageLoader):
def
test_toy_course_loads
(
self
):
module_store
=
XMLModuleStore
(
TEST_DATA_DIR
,
default_class
=
'xmodule.hidden_module.HiddenDescriptor'
,
course_dirs
=
[
'toy'
],
load_error_modules
=
True
,
)
TEST_DATA_DIR
,
default_class
=
'xmodule.hidden_module.HiddenDescriptor'
,
course_dirs
=
[
'toy'
],
load_error_modules
=
True
,
)
self
.
check_pages_load
(
module_store
)
def
test_full_course_loads
(
self
):
module_store
=
XMLModuleStore
(
TEST_DATA_DIR
,
default_class
=
'xmodule.hidden_module.HiddenDescriptor'
,
course_dirs
=
[
'full'
],
load_error_modules
=
True
,
)
TEST_DATA_DIR
,
default_class
=
'xmodule.hidden_module.HiddenDescriptor'
,
course_dirs
=
[
'full'
],
load_error_modules
=
True
,
)
self
.
check_pages_load
(
module_store
)
...
...
@@ -525,7 +517,6 @@ class TestViewAuth(PageLoader):
print
'checking for 404 on {0}'
.
format
(
url
)
self
.
check_for_get_code
(
404
,
url
)
# now also make the instructor staff
u
=
user
(
self
.
instructor
)
u
.
is_staff
=
True
...
...
@@ -536,7 +527,6 @@ class TestViewAuth(PageLoader):
print
'checking for 200 on {0}'
.
format
(
url
)
self
.
check_for_get_code
(
200
,
url
)
def
run_wrapped
(
self
,
test
):
"""
test.py turns off start dates. Enable them.
...
...
@@ -552,7 +542,6 @@ class TestViewAuth(PageLoader):
finally
:
settings
.
MITX_FEATURES
[
'DISABLE_START_DATES'
]
=
oldDSD
def
test_dark_launch
(
self
):
"""Make sure that before course start, students can't access course
pages, but instructors can"""
...
...
@@ -646,7 +635,6 @@ class TestViewAuth(PageLoader):
url
=
reverse_urls
([
'courseware'
],
course
)[
0
]
self
.
check_for_get_code
(
302
,
url
)
# First, try with an enrolled student
print
'=== Testing student access....'
self
.
login
(
self
.
student
,
self
.
password
)
...
...
@@ -761,7 +749,6 @@ class TestViewAuth(PageLoader):
self
.
assertTrue
(
has_access
(
student_user
,
self
.
toy
,
'load'
))
@override_settings
(
MODULESTORE
=
TEST_DATA_XML_MODULESTORE
)
class
TestCourseGrader
(
PageLoader
):
"""Check that a course gets graded properly"""
...
...
@@ -832,13 +819,12 @@ class TestCourseGrader(PageLoader):
kwargs
=
{
'course_id'
:
self
.
graded_course
.
id
,
'location'
:
problem_location
,
'dispatch'
:
'problem_check'
,
}
)
'dispatch'
:
'problem_check'
,
})
resp
=
self
.
client
.
post
(
modx_url
,
{
'input_i4x-edX-graded-problem-{0}_2_1'
.
format
(
problem_url_name
):
responses
[
0
],
'input_i4x-edX-graded-problem-{0}_2_2'
.
format
(
problem_url_name
):
responses
[
1
],
})
})
print
"modx_url"
,
modx_url
,
"responses"
,
responses
print
"resp"
,
resp
...
...
@@ -854,8 +840,7 @@ class TestCourseGrader(PageLoader):
kwargs
=
{
'course_id'
:
self
.
graded_course
.
id
,
'location'
:
problem_location
,
'dispatch'
:
'problem_reset'
,
}
)
'dispatch'
:
'problem_reset'
,
})
resp
=
self
.
client
.
post
(
modx_url
)
return
resp
...
...
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