Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
problem-builder
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
OpenEdx
problem-builder
Commits
a9f7743d
Commit
a9f7743d
authored
Aug 10, 2015
by
Tim Krones
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #50 from open-craft/instructor-tool-unit-tests
Add unit tests for instructor tool
parents
36cd10b9
66e67621
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
316 additions
and
13 deletions
+316
-13
problem_builder/instructor_tool.py
+23
-13
problem_builder/tests/integration/test_instructor_tool.py
+38
-0
problem_builder/tests/unit/test_instructor_tool.py
+255
-0
No files found.
problem_builder/instructor_tool.py
View file @
a9f7743d
...
@@ -134,6 +134,26 @@ class InstructorToolBlock(XBlock):
...
@@ -134,6 +134,26 @@ class InstructorToolBlock(XBlock):
_
(
'Rating Question'
):
'RatingBlock'
,
_
(
'Rating Question'
):
'RatingBlock'
,
_
(
'Long Answer'
):
'AnswerBlock'
,
_
(
'Long Answer'
):
'AnswerBlock'
,
}
}
flat_block_tree
=
self
.
_build_course_tree
()
html
=
loader
.
render_template
(
'templates/html/instructor_tool.html'
,
{
'block_choices'
:
block_choices
,
'block_tree'
:
flat_block_tree
}
)
fragment
=
Fragment
(
html
)
fragment
.
add_css_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/css/instructor_tool.css'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/instructor_tool.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/vendor/underscore-min.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/vendor/backbone-min.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/vendor/backbone.paginator.min.js'
))
fragment
.
initialize_js
(
'InstructorToolBlock'
)
return
fragment
def
_build_course_tree
(
self
):
"""
Return flat tree of blocks belonging to this block's parent course.
"""
eligible_block_types
=
(
'pb-mcq'
,
'pb-rating'
,
'pb-answer'
)
eligible_block_types
=
(
'pb-mcq'
,
'pb-rating'
,
'pb-answer'
)
flat_block_tree
=
[]
flat_block_tree
=
[]
...
@@ -172,7 +192,7 @@ class InstructorToolBlock(XBlock):
...
@@ -172,7 +192,7 @@ class InstructorToolBlock(XBlock):
def
build_tree
(
block
,
ancestors
):
def
build_tree
(
block
,
ancestors
):
"""
"""
Build up a tree of information about the XBlocks descending from
root_block
Build up a tree of information about the XBlocks descending from
`block`.
"""
"""
block_id
=
get_block_id
(
block
)
block_id
=
get_block_id
(
block
)
block_name
=
get_block_name
(
block
)
block_name
=
get_block_name
(
block
)
...
@@ -205,6 +225,7 @@ class InstructorToolBlock(XBlock):
...
@@ -205,6 +225,7 @@ class InstructorToolBlock(XBlock):
"depth"
:
0
,
"depth"
:
0
,
"id"
:
root_block_id
,
"id"
:
root_block_id
,
"name"
:
"All"
,
"name"
:
"All"
,
"eligible"
:
False
,
}
}
flat_block_tree
.
append
(
root_entry
)
flat_block_tree
.
append
(
root_entry
)
...
@@ -212,18 +233,7 @@ class InstructorToolBlock(XBlock):
...
@@ -212,18 +233,7 @@ class InstructorToolBlock(XBlock):
child_block
=
root_block
.
runtime
.
get_block
(
child_id
)
child_block
=
root_block
.
runtime
.
get_block
(
child_id
)
build_tree
(
child_block
,
[
root_entry
])
build_tree
(
child_block
,
[
root_entry
])
html
=
loader
.
render_template
(
return
flat_block_tree
'templates/html/instructor_tool.html'
,
{
'block_choices'
:
block_choices
,
'block_tree'
:
flat_block_tree
}
)
fragment
=
Fragment
(
html
)
fragment
.
add_css_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/css/instructor_tool.css'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/instructor_tool.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/vendor/underscore-min.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/vendor/backbone-min.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/vendor/backbone.paginator.min.js'
))
fragment
.
initialize_js
(
'InstructorToolBlock'
)
return
fragment
@property
@property
def
download_url_for_last_report
(
self
):
def
download_url_for_last_report
(
self
):
...
...
problem_builder/tests/integration/test_instructor_tool.py
View file @
a9f7743d
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import
math
import
re
import
re
import
time
import
time
...
@@ -49,6 +50,9 @@ class InstructorToolTest(SeleniumXBlockTest):
...
@@ -49,6 +50,9 @@ class InstructorToolTest(SeleniumXBlockTest):
self
.
set_scenario_xml
(
"""
self
.
set_scenario_xml
(
"""
<vertical_demo>
<vertical_demo>
<pb-instructor-tool url_name="data_export"/>
<pb-instructor-tool url_name="data_export"/>
<problem-builder mode="standard">
<pb-answer name="answer" question="Is this a long long long long long long long long long long question?" />
</problem-builder>
</vertical_demo>
</vertical_demo>
"""
)
"""
)
...
@@ -62,6 +66,40 @@ class InstructorToolTest(SeleniumXBlockTest):
...
@@ -62,6 +66,40 @@ class InstructorToolTest(SeleniumXBlockTest):
'instructor_task.models'
:
MockInstructorTaskModelsModule
(),
'instructor_task.models'
:
MockInstructorTaskModelsModule
(),
})
})
@patch.object
(
InstructorToolBlock
,
'user_is_staff'
,
Mock
(
return_value
=
True
))
@patch.object
(
InstructorToolBlock
,
'user_is_staff'
,
Mock
(
return_value
=
True
))
def
test_export_field_container_width
(
self
):
instructor_tool
=
self
.
go_to_view
()
export_field_container
=
instructor_tool
.
find_element_by_class_name
(
'data-export-field-container'
)
parent_div
=
export_field_container
.
find_element_by_xpath
(
'..'
)
export_field_container_width
=
export_field_container
.
size
[
'width'
]
parent_div_width
=
parent_div
.
size
[
'width'
]
self
.
assertTrue
(
export_field_container_width
<=
math
.
ceil
(
0.43
*
parent_div_width
))
@patch.dict
(
'sys.modules'
,
{
'problem_builder.tasks'
:
MockTasksModule
(
successful
=
True
),
'instructor_task'
:
True
,
'instructor_task.models'
:
MockInstructorTaskModelsModule
(),
})
@patch.object
(
InstructorToolBlock
,
'user_is_staff'
,
Mock
(
return_value
=
True
))
def
test_root_block_select_width
(
self
):
instructor_tool
=
self
.
go_to_view
()
root_block_select
=
instructor_tool
.
find_element_by_name
(
'root_block_id'
)
parent_div
=
root_block_select
.
find_element_by_xpath
(
'../..'
)
root_block_select_width
=
root_block_select
.
size
[
'width'
]
parent_div_width
=
parent_div
.
size
[
'width'
]
self
.
assertTrue
(
root_block_select_width
<=
math
.
ceil
(
0.55
*
parent_div_width
))
@patch.dict
(
'sys.modules'
,
{
'problem_builder.tasks'
:
MockTasksModule
(
successful
=
True
),
'instructor_task'
:
True
,
'instructor_task.models'
:
MockInstructorTaskModelsModule
(),
})
@patch.object
(
InstructorToolBlock
,
'user_is_staff'
,
Mock
(
return_value
=
True
))
def
test_data_export_delete
(
self
):
def
test_data_export_delete
(
self
):
instructor_tool
=
self
.
go_to_view
()
instructor_tool
=
self
.
go_to_view
()
start_button
=
instructor_tool
.
find_element_by_class_name
(
'data-export-start'
)
start_button
=
instructor_tool
.
find_element_by_class_name
(
'data-export-start'
)
...
...
problem_builder/tests/unit/test_instructor_tool.py
0 → 100644
View file @
a9f7743d
This diff is collapsed.
Click to expand it.
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