diff --git a/common/djangoapps/terrain/ui_helpers.py b/common/djangoapps/terrain/ui_helpers.py index 38e984e..7260f70 100644 --- a/common/djangoapps/terrain/ui_helpers.py +++ b/common/djangoapps/terrain/ui_helpers.py @@ -22,7 +22,7 @@ from selenium.common.exceptions import ( from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait -from nose.tools import assert_true # pylint: disable=E0611 +from nose.tools import assert_true # pylint: disable=no-name-in-module REQUIREJS_WAIT = { @@ -306,6 +306,25 @@ def css_has_text(css_selector, text, index=0, strip=False): @world.absorb +def css_contains_text(css_selector, partial_text, index=0): + """ + Return a boolean indicating whether the element with `css_selector` + contains `partial_text`. + + If there are multiple elements matching the css selector, + use `index` to indicate which one. + """ + # If we're expecting a non-empty string, give the page + # a chance to fill in text fields. + if partial_text: + wait_for(lambda _: css_text(css_selector, index=index)) + + actual_text = css_text(css_selector, index=index) + + return partial_text in actual_text + + +@world.absorb def css_has_value(css_selector, value, index=0): """ Return a boolean indicating whether the element with diff --git a/lms/djangoapps/courseware/features/conditional.py b/lms/djangoapps/courseware/features/conditional.py index db6b043..4ec593f 100644 --- a/lms/djangoapps/courseware/features/conditional.py +++ b/lms/djangoapps/courseware/features/conditional.py @@ -1,6 +1,8 @@ +# pylint: disable=C0111 +# pylint: disable=W0621 from lettuce import world, steps -from nose.tools import assert_in, assert_equals, assert_true +from nose.tools import assert_in, assert_true # pylint: disable=no-name-in-module from common import i_am_registered_for_the_course, visit_scenario_item from problems_setup import add_problem_to_course, answer_problem @@ -90,6 +92,7 @@ class ConditionalSteps(object): assert_true(world.css_visible('.hidden-contents')) else: assert_true(world.is_css_not_present('.hidden-contents')) + assert_true(world.css_contains_text('.conditional-message', 'must be attempted before this will become visible.')) # sarina def answer_poll(self, step, answer): r' I answer the conditioned poll "([^"]*)"$' @@ -116,4 +119,4 @@ class ConditionalSteps(object): return -ConditionalSteps() \ No newline at end of file +ConditionalSteps() diff --git a/lms/templates/conditional_module.html b/lms/templates/conditional_module.html index ff37a35..fa4b7f3 100644 --- a/lms/templates/conditional_module.html +++ b/lms/templates/conditional_module.html @@ -5,11 +5,11 @@ from django.core.urlresolvers import reverse def _message(reqm, message): return message.format(link="<a href={url}>{url_name}</a>".format( url = reverse('jump_to', kwargs=dict(course_id=reqm.course_id.to_deprecated_string(), - location=reqm.location.url())), + location=reqm.location.to_deprecated_string())), url_name = reqm.display_name_with_default)) %> % if message: % for reqm in module.required_modules: - <p>${_message(reqm, message)}</p> + <p class="conditional-message">${_message(reqm, message)}</p> % endfor % endif