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
cc0fda93
Commit
cc0fda93
authored
Oct 16, 2015
by
Tim Krones
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add tests.
parent
df202ce3
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
155 additions
and
1 deletions
+155
-1
problem_builder/plot.py
+1
-1
problem_builder/step.py
+2
-0
problem_builder/tests/integration/test_step_builder.py
+81
-0
problem_builder/tests/integration/xml_templates/step_builder_plot.xml
+47
-0
problem_builder/tests/integration/xml_templates/step_builder_plot_defaults.xml
+24
-0
No files found.
problem_builder/plot.py
View file @
cc0fda93
...
...
@@ -42,6 +42,7 @@ log = logging.getLogger(__name__)
def
_
(
text
):
return
text
def
_normalize_id
(
key
):
"""
Helper method to normalize a key to avoid issues where some keys have version/branch and others don't.
...
...
@@ -251,7 +252,6 @@ class PlotBlock(StudioEditableXBlockMixin, StudioContainerWithNestedXBlocksMixin
fragment
=
Fragment
()
fragment
.
add_content
(
loader
.
render_template
(
'templates/html/plot.html'
,
context
))
fragment
.
add_css_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/css/plot.css'
))
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/d3.min.js'
))
fragment
.
add_javascript_url
(
self
.
runtime
.
local_resource_url
(
self
,
'public/js/plot.js'
))
fragment
.
initialize_js
(
'PlotBlock'
)
...
...
problem_builder/step.py
View file @
cc0fda93
...
...
@@ -231,6 +231,8 @@ class MentoringStepBlock(
def
_render_view
(
self
,
context
,
view
):
""" Actually renders a view """
rendering_for_studio
=
False
if
context
:
# Workbench does not provide context
rendering_for_studio
=
context
.
get
(
'author_preview_view'
)
fragment
=
Fragment
()
...
...
problem_builder/tests/integration/test_step_builder.py
View file @
cc0fda93
...
...
@@ -505,3 +505,84 @@ class StepBuilderTest(MentoringAssessmentBaseTest):
# Should show default message for review
self
.
assert_message_text
(
step_builder
,
"Note: you have used all attempts. Continue to the next unit."
)
def
answer_rating_question
(
self
,
step_number
,
question_number
,
step_builder
,
question
,
choice_name
):
question_text
=
self
.
question_text
(
question_number
)
self
.
wait_until_text_in
(
question_text
,
step_builder
)
self
.
assertIn
(
question
,
step_builder
.
text
)
choices
=
GetChoices
(
step_builder
,
'div[data-name="rating_{}_{}"] > .rating'
.
format
(
step_number
,
question_number
)
)
choices
.
select
(
choice_name
)
def
submit_and_go_to_next_step
(
self
,
controls
):
controls
.
submit
.
click
()
self
.
wait_until_clickable
(
controls
.
next_question
)
controls
.
next_question
.
click
()
def
plot_controls
(
self
,
step_builder
):
class
Namespace
(
object
):
pass
plot_controls
=
Namespace
()
plot_controls
.
default_button
=
step_builder
.
find_element_by_css_selector
(
".plot-default"
)
plot_controls
.
average_button
=
step_builder
.
find_element_by_css_selector
(
".plot-average"
)
plot_controls
.
quadrants_button
=
step_builder
.
find_element_by_css_selector
(
".plot-quadrants"
)
return
plot_controls
def
plot_empty
(
self
,
step_builder
):
points
=
step_builder
.
find_elements_by_css_selector
(
"circle"
)
self
.
assertEquals
(
points
,
[])
def
check_quadrant_labels
(
self
,
step_builder
,
controls
,
hidden
):
quadrant_labels
=
step_builder
.
find_elements_by_css_selector
(
".quadrant-label"
)
quadrants_button_border_colors
=
[
controls
.
quadrants_button
.
value_of_css_property
(
'border-top-color'
),
controls
.
quadrants_button
.
value_of_css_property
(
'border-right-color'
),
controls
.
quadrants_button
.
value_of_css_property
(
'border-bottom-color'
),
controls
.
quadrants_button
.
value_of_css_property
(
'border-left-color'
),
]
print
(
quadrants_button_border_colors
)
if
hidden
:
self
.
assertEquals
(
quadrant_labels
,
[])
# rgba(255, 0, 0, 1): "red"
self
.
assertTrue
(
all
(
bc
==
'rgba(255, 0, 0, 1)'
for
bc
in
quadrants_button_border_colors
))
else
:
self
.
assertEquals
(
len
(
quadrant_labels
),
4
)
self
.
assertEquals
(
set
(
label
.
text
for
label
in
quadrant_labels
),
set
([
'Q1'
,
'Q2'
,
'Q3'
,
'Q4'
]))
# rgba(0, 128, 0, 1): "green"
self
.
assertTrue
(
all
(
bc
==
'rgba(0, 128, 0, 1)'
for
bc
in
quadrants_button_border_colors
))
def
test_empty_plot
(
self
):
step_builder
,
controls
=
self
.
load_assessment_scenario
(
"step_builder_plot_defaults.xml"
,
{})
# Step 1: Questions
# Provide first rating
self
.
answer_rating_question
(
1
,
1
,
step_builder
,
"How much do you agree?"
,
"1 - Disagree"
)
# Provide second rating
self
.
answer_rating_question
(
1
,
2
,
step_builder
,
"How important do you think this is?"
,
"5 - Very important"
)
# Advance
self
.
submit_and_go_to_next_step
(
controls
)
# Step 2: Plot
# Check if plot is empty (default overlay on, average overlay off)
self
.
plot_empty
(
step_builder
)
# Obtain references to plot controls
plot_controls
=
self
.
plot_controls
(
step_builder
)
# Check if plot is empty (default overlay off, average overlay off)
plot_controls
.
default_button
.
click
()
self
.
plot_empty
(
step_builder
)
# Check if plot is empty (default overlay off, average overlay on)
plot_controls
.
average_button
.
click
()
self
.
plot_empty
(
step_builder
)
# Check if plot is empty (default overlay on, average overlay on)
plot_controls
.
default_button
.
click
()
self
.
plot_empty
(
step_builder
)
# Check quadrant labels
self
.
check_quadrant_labels
(
step_builder
,
plot_controls
,
hidden
=
True
)
plot_controls
.
quadrants_button
.
click
()
self
.
check_quadrant_labels
(
step_builder
,
plot_controls
,
hidden
=
False
)
def
test_plot
(
self
):
pass
problem_builder/tests/integration/xml_templates/step_builder_plot.xml
0 → 100644
View file @
cc0fda93
<step-builder
url_name=
"step-builder"
display_name=
"Step Builder"
>
<sb-step
display_name=
"First step"
>
<pb-rating
name=
"rating_1_1"
low=
"Disagree"
high=
"Agree"
question=
"How much do you agree?"
correct_choices=
'["1", "2", "3", "4","5"]'
>
</pb-rating>
<pb-rating
name=
"rating_1_2"
low=
"Not important"
high=
"Very important"
question=
"How important do you think this is?"
correct_choices=
'["1", "2", "3", "4","5"]'
>
</pb-rating>
</sb-step>
<sb-step
display_name=
"Second step"
>
<pb-rating
name=
"rating_2_1"
low=
"Disagree"
high=
"Agree"
question=
"How much do you agree?"
correct_choices=
'["1", "2", "3", "4","5"]'
>
</pb-rating>
<pb-rating
name=
"rating_2_2"
low=
"Not important"
high=
"Very important"
question=
"How important do you think this is?"
correct_choices=
'["1", "2", "3", "4","5"]'
>
</pb-rating>
</sb-step>
<sb-step
display_name=
"Last step"
>
<sb-plot
plot_label=
"Custom plot label"
point_color_default=
"orange"
point_color_average=
"purple"
q1_label=
"Custom Q1 label"
q2_label=
"Custom Q2 label"
q3_label=
"Custom Q3 label"
q4_label=
"Custom Q4 label"
claims=
"2 + 2 = 5, rating_1_1, rating_1_2\nThe answer to everything is 42, rating_2_1, rating_2_2"
>
</sb-plot>
</sb-step>
<sb-review-step></sb-review-step>
</step-builder>
problem_builder/tests/integration/xml_templates/step_builder_plot_defaults.xml
0 → 100644
View file @
cc0fda93
<step-builder
url_name=
"step-builder"
display_name=
"Step Builder"
>
<sb-step
display_name=
"First step"
>
<pb-rating
name=
"rating_1_1"
low=
"Disagree"
high=
"Agree"
question=
"How much do you agree?"
correct_choices=
'["1", "2", "3", "4","5"]'
>
</pb-rating>
<pb-rating
name=
"rating_1_2"
low=
"Not important"
high=
"Very important"
question=
"How important do you think this is?"
correct_choices=
'["1", "2", "3", "4","5"]'
>
</pb-rating>
</sb-step>
<sb-step
display_name=
"Last step"
>
<sb-plot></sb-plot>
</sb-step>
<sb-review-step></sb-review-step>
</step-builder>
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