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
43d8574e
Commit
43d8574e
authored
Mar 05, 2013
by
Will Daly
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactored use of test_system in xmodule unit tests
so that a new one is created for each test
parent
73281a43
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
76 additions
and
62 deletions
+76
-62
common/lib/xmodule/xmodule/tests/__init__.py
+29
-15
common/lib/xmodule/xmodule/tests/test_capa_module.py
+9
-23
common/lib/xmodule/xmodule/tests/test_combined_open_ended.py
+24
-15
common/lib/xmodule/xmodule/tests/test_conditional.py
+6
-3
common/lib/xmodule/xmodule/tests/test_self_assessment.py
+8
-6
No files found.
common/lib/xmodule/xmodule/tests/__init__.py
View file @
43d8574e
...
...
@@ -28,21 +28,35 @@ open_ended_grading_interface = {
'grading_controller'
:
'grading_controller'
}
test_system
=
ModuleSystem
(
ajax_url
=
'courses/course_id/modx/a_location'
,
track_function
=
Mock
(),
get_module
=
Mock
(),
# "render" to just the context...
render_template
=
lambda
template
,
context
:
str
(
context
),
replace_urls
=
lambda
html
:
str
(
html
),
user
=
Mock
(
is_staff
=
False
),
filestore
=
Mock
(),
debug
=
True
,
xqueue
=
{
'interface'
:
None
,
'callback_url'
:
'/'
,
'default_queuename'
:
'testqueue'
,
'waittime'
:
10
},
node_path
=
os
.
environ
.
get
(
"NODE_PATH"
,
"/usr/local/lib/node_modules"
),
anonymous_student_id
=
'student'
,
open_ended_grading_interface
=
open_ended_grading_interface
)
def
test_system
():
"""
Construct a test ModuleSystem instance.
By default, the render_template() method simply returns
the context it is passed as a string.
You can override this behavior by monkey patching:
system = test_system()
system.render_template = my_render_func
where my_render_func is a function of the form
my_render_func(template, context)
"""
return
ModuleSystem
(
ajax_url
=
'courses/course_id/modx/a_location'
,
track_function
=
Mock
(),
get_module
=
Mock
(),
render_template
=
lambda
template
,
context
:
str
(
context
),
replace_urls
=
lambda
html
:
str
(
html
),
user
=
Mock
(
is_staff
=
False
),
filestore
=
Mock
(),
debug
=
True
,
xqueue
=
{
'interface'
:
None
,
'callback_url'
:
'/'
,
'default_queuename'
:
'testqueue'
,
'waittime'
:
10
},
node_path
=
os
.
environ
.
get
(
"NODE_PATH"
,
"/usr/local/lib/node_modules"
),
anonymous_student_id
=
'student'
,
open_ended_grading_interface
=
open_ended_grading_interface
)
class
ModelsTest
(
unittest
.
TestCase
):
...
...
common/lib/xmodule/xmodule/tests/test_capa_module.py
View file @
43d8574e
...
...
@@ -108,7 +108,7 @@ class CapaFactory(object):
else
:
instance_state
=
None
module
=
CapaModule
(
test_system
,
location
,
module
=
CapaModule
(
test_system
()
,
location
,
definition
,
descriptor
,
instance_state
,
None
,
metadata
=
metadata
)
...
...
@@ -794,14 +794,8 @@ class CapaModuleTest(unittest.TestCase):
module
.
should_show_reset_button
=
Mock
(
return_value
=
show_reset_button
)
module
.
should_show_save_button
=
Mock
(
return_value
=
show_save_button
)
# Mock the system rendering function (reset when we're done)
old_render_func
=
test_system
.
render_template
test_system
.
render_template
=
Mock
(
return_value
=
"<div>Test Template HTML</div>"
)
def
cleanup_func
():
test_system
.
render_template
=
old_render_func
self
.
addCleanup
(
cleanup_func
)
# Mock the system rendering function
module
.
system
.
render_template
=
Mock
(
return_value
=
"<div>Test Template HTML</div>"
)
# Patch the capa problem's HTML rendering
with
patch
(
'capa.capa_problem.LoncapaProblem.get_html'
)
as
mock_html
:
...
...
@@ -817,7 +811,7 @@ class CapaModuleTest(unittest.TestCase):
self
.
assertEqual
(
html
,
"<div>Test Template HTML</div>"
)
# Check the rendering context
render_args
,
_
=
test_
system
.
render_template
.
call_args
render_args
,
_
=
module
.
system
.
render_template
.
call_args
self
.
assertEqual
(
len
(
render_args
),
2
)
template_name
=
render_args
[
0
]
...
...
@@ -848,25 +842,17 @@ class CapaModuleTest(unittest.TestCase):
# is asked to render itself as HTML
module
.
lcp
.
get_html
=
Mock
(
side_effect
=
Exception
(
"Test"
))
# Stub out the test_system rendering function temporarily
old_render_func
=
test_system
.
render_template
test_system
.
render_template
=
Mock
(
return_value
=
"<div>Test Template HTML</div>"
)
# Turn off DEBUG temporarily
old_debug
=
test_system
.
DEBUG
test_system
.
DEBUG
=
False
def
cleanup_func
():
test_system
.
render_template
=
old_render_func
test_system
.
DEBUG
=
old_debug
# Stub out the test_system rendering function
module
.
system
.
render_template
=
Mock
(
return_value
=
"<div>Test Template HTML</div>"
)
self
.
addCleanup
(
cleanup_func
)
# Turn off DEBUG
module
.
system
.
DEBUG
=
False
# Try to render the module with DEBUG turned off
html
=
module
.
get_problem_html
()
# Check the rendering context
render_args
,
_
=
test_
system
.
render_template
.
call_args
render_args
,
_
=
module
.
system
.
render_template
.
call_args
context
=
render_args
[
1
]
self
.
assertTrue
(
"error"
in
context
[
'problem'
][
'html'
])
...
...
common/lib/xmodule/xmodule/tests/test_combined_open_ended.py
View file @
43d8574e
...
...
@@ -54,7 +54,8 @@ class OpenEndedChildTest(unittest.TestCase):
descriptor
=
Mock
()
def
setUp
(
self
):
self
.
openendedchild
=
OpenEndedChild
(
test_system
,
self
.
location
,
self
.
test_system
=
test_system
()
self
.
openendedchild
=
OpenEndedChild
(
self
.
test_system
,
self
.
location
,
self
.
definition
,
self
.
descriptor
,
self
.
static_data
,
self
.
metadata
)
...
...
@@ -69,7 +70,7 @@ class OpenEndedChildTest(unittest.TestCase):
def
test_latest_post_assessment_empty
(
self
):
answer
=
self
.
openendedchild
.
latest_post_assessment
(
test_system
)
answer
=
self
.
openendedchild
.
latest_post_assessment
(
self
.
test_system
)
self
.
assertEqual
(
answer
,
""
)
...
...
@@ -106,7 +107,7 @@ class OpenEndedChildTest(unittest.TestCase):
post_assessment
=
"Post assessment"
self
.
openendedchild
.
record_latest_post_assessment
(
post_assessment
)
self
.
assertEqual
(
post_assessment
,
self
.
openendedchild
.
latest_post_assessment
(
test_system
))
self
.
openendedchild
.
latest_post_assessment
(
self
.
test_system
))
def
test_get_score
(
self
):
new_answer
=
"New Answer"
...
...
@@ -125,7 +126,7 @@ class OpenEndedChildTest(unittest.TestCase):
def
test_reset
(
self
):
self
.
openendedchild
.
reset
(
test_system
)
self
.
openendedchild
.
reset
(
self
.
test_system
)
state
=
json
.
loads
(
self
.
openendedchild
.
get_instance_state
())
self
.
assertEqual
(
state
[
'state'
],
OpenEndedChild
.
INITIAL
)
...
...
@@ -182,11 +183,13 @@ class OpenEndedModuleTest(unittest.TestCase):
descriptor
=
Mock
()
def
setUp
(
self
):
test_system
.
location
=
self
.
location
self
.
test_system
=
test_system
()
self
.
test_system
.
location
=
self
.
location
self
.
mock_xqueue
=
MagicMock
()
self
.
mock_xqueue
.
send_to_queue
.
return_value
=
(
None
,
"Message"
)
test_system
.
xqueue
=
{
'interface'
:
self
.
mock_xqueue
,
'callback_url'
:
'/'
,
'default_queuename'
:
'testqueue'
,
'waittime'
:
1
}
self
.
openendedmodule
=
OpenEndedModule
(
test_system
,
self
.
location
,
self
.
test_system
.
xqueue
=
{
'interface'
:
self
.
mock_xqueue
,
'callback_url'
:
'/'
,
'default_queuename'
:
'testqueue'
,
'waittime'
:
1
}
self
.
openendedmodule
=
OpenEndedModule
(
self
.
test_system
,
self
.
location
,
self
.
definition
,
self
.
descriptor
,
self
.
static_data
,
self
.
metadata
)
def
test_message_post
(
self
):
...
...
@@ -195,7 +198,7 @@ class OpenEndedModuleTest(unittest.TestCase):
'grader_id'
:
'1'
,
'score'
:
3
}
qtime
=
datetime
.
strftime
(
datetime
.
now
(),
xqueue_interface
.
dateformat
)
student_info
=
{
'anonymous_student_id'
:
test_system
.
anonymous_student_id
,
student_info
=
{
'anonymous_student_id'
:
self
.
test_system
.
anonymous_student_id
,
'submission_time'
:
qtime
}
contents
=
{
'feedback'
:
get
[
'feedback'
],
...
...
@@ -205,7 +208,7 @@ class OpenEndedModuleTest(unittest.TestCase):
'student_info'
:
json
.
dumps
(
student_info
)
}
result
=
self
.
openendedmodule
.
message_post
(
get
,
test_system
)
result
=
self
.
openendedmodule
.
message_post
(
get
,
self
.
test_system
)
self
.
assertTrue
(
result
[
'success'
])
# make sure it's actually sending something we want to the queue
self
.
mock_xqueue
.
send_to_queue
.
assert_called_with
(
body
=
json
.
dumps
(
contents
),
header
=
ANY
)
...
...
@@ -216,7 +219,7 @@ class OpenEndedModuleTest(unittest.TestCase):
def
test_send_to_grader
(
self
):
submission
=
"This is a student submission"
qtime
=
datetime
.
strftime
(
datetime
.
now
(),
xqueue_interface
.
dateformat
)
student_info
=
{
'anonymous_student_id'
:
test_system
.
anonymous_student_id
,
student_info
=
{
'anonymous_student_id'
:
self
.
test_system
.
anonymous_student_id
,
'submission_time'
:
qtime
}
contents
=
self
.
openendedmodule
.
payload
.
copy
()
contents
.
update
({
...
...
@@ -224,7 +227,7 @@ class OpenEndedModuleTest(unittest.TestCase):
'student_response'
:
submission
,
'max_score'
:
self
.
max_score
})
result
=
self
.
openendedmodule
.
send_to_grader
(
submission
,
test_system
)
result
=
self
.
openendedmodule
.
send_to_grader
(
submission
,
self
.
test_system
)
self
.
assertTrue
(
result
)
self
.
mock_xqueue
.
send_to_queue
.
assert_called_with
(
body
=
json
.
dumps
(
contents
),
header
=
ANY
)
...
...
@@ -238,7 +241,7 @@ class OpenEndedModuleTest(unittest.TestCase):
}
get
=
{
'queuekey'
:
"abcd"
,
'xqueue_body'
:
score_msg
}
self
.
openendedmodule
.
update_score
(
get
,
test_system
)
self
.
openendedmodule
.
update_score
(
get
,
self
.
test_system
)
def
update_score_single
(
self
):
self
.
openendedmodule
.
new_history_entry
(
"New Entry"
)
...
...
@@ -261,11 +264,11 @@ class OpenEndedModuleTest(unittest.TestCase):
}
get
=
{
'queuekey'
:
"abcd"
,
'xqueue_body'
:
json
.
dumps
(
score_msg
)}
self
.
openendedmodule
.
update_score
(
get
,
test_system
)
self
.
openendedmodule
.
update_score
(
get
,
self
.
test_system
)
def
test_latest_post_assessment
(
self
):
self
.
update_score_single
()
assessment
=
self
.
openendedmodule
.
latest_post_assessment
(
test_system
)
assessment
=
self
.
openendedmodule
.
latest_post_assessment
(
self
.
test_system
)
self
.
assertFalse
(
assessment
==
''
)
# check for errors
self
.
assertFalse
(
'errors'
in
assessment
)
...
...
@@ -336,7 +339,13 @@ class CombinedOpenEndedModuleTest(unittest.TestCase):
descriptor
=
Mock
()
def
setUp
(
self
):
self
.
combinedoe
=
CombinedOpenEndedV1Module
(
test_system
,
self
.
location
,
self
.
definition
,
self
.
descriptor
,
static_data
=
self
.
static_data
,
metadata
=
self
.
metadata
)
self
.
test_system
=
test_system
()
self
.
combinedoe
=
CombinedOpenEndedV1Module
(
self
.
test_system
,
self
.
location
,
self
.
definition
,
self
.
descriptor
,
static_data
=
self
.
static_data
,
metadata
=
self
.
metadata
)
def
test_get_tag_name
(
self
):
name
=
self
.
combinedoe
.
get_tag_name
(
"<t>Tag</t>"
)
...
...
common/lib/xmodule/xmodule/tests/test_conditional.py
View file @
43d8574e
...
...
@@ -56,6 +56,9 @@ class ConditionalModuleTest(unittest.TestCase):
'''Get a dummy system'''
return
DummySystem
(
load_error_modules
)
def
setUp
(
self
):
self
.
test_system
=
test_system
()
def
get_course
(
self
,
name
):
"""Get a test course by directory name. If there's more than one, error."""
print
"Importing {0}"
.
format
(
name
)
...
...
@@ -85,14 +88,14 @@ class ConditionalModuleTest(unittest.TestCase):
location
=
descriptor
.
location
instance_state
=
instance_states
.
get
(
location
.
category
,
None
)
print
"inner_get_module, location=
%
s, inst_state=
%
s"
%
(
location
,
instance_state
)
return
descriptor
.
xmodule_constructor
(
test_system
)(
instance_state
,
shared_state
)
return
descriptor
.
xmodule_constructor
(
self
.
test_system
)(
instance_state
,
shared_state
)
location
=
Location
([
"i4x"
,
"edX"
,
"cond_test"
,
"conditional"
,
"condone"
])
def
replace_urls
(
text
,
staticfiles_prefix
=
None
,
replace_prefix
=
'/static/'
,
course_namespace
=
None
):
return
text
test_system
.
replace_urls
=
replace_urls
test_system
.
get_module
=
inner_get_module
self
.
test_system
.
replace_urls
=
replace_urls
self
.
test_system
.
get_module
=
inner_get_module
module
=
inner_get_module
(
location
)
print
"module: "
,
module
...
...
common/lib/xmodule/xmodule/tests/test_self_assessment.py
View file @
43d8574e
...
...
@@ -53,13 +53,13 @@ class SelfAssessmentTest(unittest.TestCase):
'skip_basic_checks'
:
False
,
}
self
.
module
=
SelfAssessmentModule
(
test_system
,
self
.
location
,
self
.
module
=
SelfAssessmentModule
(
test_system
()
,
self
.
location
,
self
.
definition
,
self
.
descriptor
,
static_data
,
state
,
metadata
=
self
.
metadata
)
def
test_get_html
(
self
):
html
=
self
.
module
.
get_html
(
test_
system
)
html
=
self
.
module
.
get_html
(
self
.
module
.
system
)
self
.
assertTrue
(
"This is sample prompt text"
in
html
)
def
test_self_assessment_flow
(
self
):
...
...
@@ -82,10 +82,11 @@ class SelfAssessmentTest(unittest.TestCase):
self
.
assertEqual
(
self
.
module
.
get_score
()[
'score'
],
0
)
self
.
module
.
save_answer
({
'student_answer'
:
"I am an answer"
},
test_system
)
self
.
module
.
save_answer
({
'student_answer'
:
"I am an answer"
},
self
.
module
.
system
)
self
.
assertEqual
(
self
.
module
.
state
,
self
.
module
.
ASSESSING
)
self
.
module
.
save_assessment
(
mock_query_dict
,
test_
system
)
self
.
module
.
save_assessment
(
mock_query_dict
,
self
.
module
.
system
)
self
.
assertEqual
(
self
.
module
.
state
,
self
.
module
.
DONE
)
...
...
@@ -94,7 +95,8 @@ class SelfAssessmentTest(unittest.TestCase):
self
.
assertEqual
(
self
.
module
.
state
,
self
.
module
.
INITIAL
)
# if we now assess as right, skip the REQUEST_HINT state
self
.
module
.
save_answer
({
'student_answer'
:
'answer 4'
},
test_system
)
self
.
module
.
save_answer
({
'student_answer'
:
'answer 4'
},
self
.
module
.
system
)
responses
[
'assessment'
]
=
'1'
self
.
module
.
save_assessment
(
mock_query_dict
,
test_
system
)
self
.
module
.
save_assessment
(
mock_query_dict
,
self
.
module
.
system
)
self
.
assertEqual
(
self
.
module
.
state
,
self
.
module
.
DONE
)
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