diff --git a/lms/djangoapps/courseware/features/problems.feature b/lms/djangoapps/courseware/features/problems.feature index cc459fa35f..f50d8329b6 100644 --- a/lms/djangoapps/courseware/features/problems.feature +++ b/lms/djangoapps/courseware/features/problems.feature @@ -13,6 +13,7 @@ Feature: Answer choice problems | drop down | | multiple choice | | checkbox | + | string | Scenario: I can answer a problem incorrectly Given I am viewing a "" problem @@ -24,6 +25,7 @@ Feature: Answer choice problems | drop down | | multiple choice | | checkbox | + | string | Scenario: I can submit a blank answer Given I am viewing a "" problem @@ -35,6 +37,7 @@ Feature: Answer choice problems | drop down | | multiple choice | | checkbox | + | string | Scenario: I can reset a problem @@ -51,3 +54,5 @@ Feature: Answer choice problems | multiple choice | incorrect | | checkbox | correct | | checkbox | incorrect | + | string | correct | + | string | incorrect | diff --git a/lms/djangoapps/courseware/features/problems.py b/lms/djangoapps/courseware/features/problems.py index 55467378f4..19c0195b15 100644 --- a/lms/djangoapps/courseware/features/problems.py +++ b/lms/djangoapps/courseware/features/problems.py @@ -5,7 +5,8 @@ from common import i_am_registered_for_the_course problem_urls = { 'drop down': '/courses/edX/model_course/2013_Spring/courseware/Problem_Components/Drop_Down_Problems', 'multiple choice': '/courses/edX/model_course/2013_Spring/courseware/Problem_Components/Multiple_Choice_Problems', - 'checkbox': '/courses/edX/model_course/2013_Spring/courseware/Problem_Components/Checkbox_Problems', } + 'checkbox': '/courses/edX/model_course/2013_Spring/courseware/Problem_Components/Checkbox_Problems', + 'string': '/courses/edX/model_course/2013_Spring/courseware/Problem_Components/String_Problems' } @step(u'I am viewing a "([^"]*)" problem') def view_problem(step, problem_type): @@ -35,6 +36,11 @@ def answer_problem(step, problem_type, correctness): else: world.browser.find_by_css('#input_i4x-edX-model_course-problem-Checkbox_Problem_2_1_choice_3').check() + elif problem_type == 'string': + textfield = world.browser.find_by_css("input#input_i4x-edX-model_course-problem-String_Problem_2_1") + textvalue = 'correct string' if correctness == 'correct' else 'incorrect' + textfield.fill(textvalue) + check_problem(step) @step(u'I check a problem') @@ -65,10 +71,18 @@ def assert_answer_mark(step, problem_type, correctness): # Two ways to be marked incorrect: either applying a # class to the label (marking a particular option) # or applying a class to a span (marking the whole problem incorrect) - mark_classes = ['label.choicegroup_incorrect', 'label.incorrect'] + mark_classes = ['label.choicegroup_incorrect', 'span.incorrect'] assert(world.browser.is_element_present_by_css(mark_classes[0], wait_time=4) or world.browser.is_element_present_by_css(mark_classes[1], wait_time=4)) + elif problem_type == "string": + if correctness == 'unanswered': + assert(world.browser.is_element_not_present_by_css('div.correct')) + assert(world.browser.is_element_not_present_by_css('div.incorrect')) + else: + mark_class = 'div.correct' if correctness == 'correct' else 'div.incorrect' + assert(world.browser.is_element_present_by_css(mark_class, wait_time=4)) + else: if correctness == 'unanswered': assert(world.browser.is_element_not_present_by_css('span.correct'))