diff --git a/cms/djangoapps/contentstore/features/component_settings_editor_helpers.py b/cms/djangoapps/contentstore/features/component_settings_editor_helpers.py index 3f91297755..932c21b7a6 100644 --- a/cms/djangoapps/contentstore/features/component_settings_editor_helpers.py +++ b/cms/djangoapps/contentstore/features/component_settings_editor_helpers.py @@ -4,6 +4,7 @@ from lettuce import world from nose.tools import assert_equal, assert_in # pylint: disable=E0611 from terrain.steps import reload_the_page +from common import type_in_codemirror @world.absorb @@ -114,6 +115,16 @@ def edit_component(): world.css_click('a.edit-button') +def enter_xml_in_advanced_problem(step, text): + """ + Edits an advanced problem (assumes only on page), + types the provided XML, and saves the component. + """ + world.edit_component() + type_in_codemirror(0, text) + world.save_component(step) + + @world.absorb def verify_setting_entry(setting, display_name, value, explicitly_set): """ diff --git a/cms/djangoapps/contentstore/features/course-export.feature b/cms/djangoapps/contentstore/features/course-export.feature index 6dbd74da46..ff92c2e646 100644 --- a/cms/djangoapps/contentstore/features/course-export.feature +++ b/cms/djangoapps/contentstore/features/course-export.feature @@ -9,3 +9,11 @@ Feature: Course export And I export the course Then I get an error dialog And I can click to go to the unit with the error + + Scenario: User is directed to problem with & in it when export fails + Given I am in Studio editing a new unit + When I add a "Blank Advanced Problem" "Advanced Problem" component + And I edit and enter an ampersand + And I export the course + Then I get an error dialog + And I can click to go to the unit with the error diff --git a/cms/djangoapps/contentstore/features/course-export.py b/cms/djangoapps/contentstore/features/course-export.py index 2770c81b6d..b0b9845088 100644 --- a/cms/djangoapps/contentstore/features/course-export.py +++ b/cms/djangoapps/contentstore/features/course-export.py @@ -2,7 +2,7 @@ #pylint: disable=C0111 from lettuce import world, step -from common import type_in_codemirror +from component_settings_editor_helpers import enter_xml_in_advanced_problem from nose.tools import assert_true, assert_equal @@ -16,9 +16,7 @@ def i_export_the_course(step): @step('I edit and enter bad XML$') def i_enter_bad_xml(step): - world.edit_component() - type_in_codemirror( - 0, + enter_xml_in_advanced_problem(step, """

Smallest Canvas

You want to make the smallest canvas you can.

@@ -29,7 +27,11 @@ def i_enter_bad_xml(step):
""" ) - world.save_component(step) + + +@step('I edit and enter an ampersand$') +def i_enter_bad_xml(step): + enter_xml_in_advanced_problem(step, "&") @step('I get an error dialog$') diff --git a/common/test/data/simple/html/toylab.html b/common/test/data/simple/html/toylab.html index 81df84bd63..72f8c05aca 100644 --- a/common/test/data/simple/html/toylab.html +++ b/common/test/data/simple/html/toylab.html @@ -1,3 +1,3 @@ Lab 2A: Superposition Experiment -

Isn't the toy course great?

+

Isn't the toy course great? &