Commit 8d0f9777 by Tim Krones

Add integration test for scrolling behavior.

parent cffa4537
import time
from mock import patch from mock import patch
from ddt import ddt, data from ddt import ddt, data
...@@ -1288,3 +1290,81 @@ class StepBuilderTest(MentoringAssessmentBaseTest, MultipleSliderBlocksTestMixin ...@@ -1288,3 +1290,81 @@ class StepBuilderTest(MentoringAssessmentBaseTest, MultipleSliderBlocksTestMixin
# In that case, submitting an answer and will fail, # In that case, submitting an answer and will fail,
# as it requires the corresponding question to be visible: # as it requires the corresponding question to be visible:
self.freeform_answer(None, step_builder, controls, 'This is the answer', CORRECT) self.freeform_answer(None, step_builder, controls, 'This is the answer', CORRECT)
def provide_freeform_answer(self, step_number, question_number, step_builder, text_input):
steps = step_builder.find_elements_by_css_selector('div[data-block-type="sb-step"]')
current_step = steps[step_number-1]
freeform_questions = current_step.find_elements_by_css_selector('div[data-block-type="pb-answer"]')
current_question = freeform_questions[question_number-1]
question_text = self.question_text(question_number)
self.wait_until_text_in(question_text, current_question)
self.assertIn("What is your goal?", current_question.text)
textarea = current_question.find_element_by_css_selector("textarea")
textarea.clear()
textarea.send_keys(text_input)
self.assertEquals(textarea.get_attribute("value"), text_input)
def submit_and_go_to_review_step(self, step_builder, controls, result):
controls.submit.click()
self.do_submit_wait(controls, last=True)
self._assert_checkmark(step_builder, result)
self.do_post(controls, last=True)
def check_viewport(self):
time.sleep(2)
scroll_top = int(self.browser.execute_script("return $(window).scrollTop()"))
step_builder_offset = int(self.browser.execute_script(
"return $('div[data-block-type=\"step-builder\"]').offset().top")
)
self.assertAlmostEqual(scroll_top, step_builder_offset, delta=1)
def test_scroll_into_view(self):
step_builder, controls = self.load_assessment_scenario("step_builder_long_steps.xml", {})
# First step
self.check_viewport()
# - Answer questions
self.provide_freeform_answer(1, 1, step_builder, "This is the answer")
self.provide_freeform_answer(1, 2, step_builder, "This is the answer")
self.provide_freeform_answer(1, 3, step_builder, "This is the answer")
self.provide_freeform_answer(1, 4, step_builder, "This is the answer")
self.provide_freeform_answer(1, 5, step_builder, "This is the answer")
# - Submit and go to next step
self.submit_and_go_to_next_step(controls, last=True)
# Last step
self.check_viewport()
# - Answer questions
self.provide_freeform_answer(2, 1, step_builder, "This is the answer")
self.provide_freeform_answer(2, 2, step_builder, "This is the answer")
self.provide_freeform_answer(2, 3, step_builder, "This is the answer")
self.provide_freeform_answer(2, 4, step_builder, "This is the answer")
self.provide_freeform_answer(2, 5, step_builder, "This is the answer")
# - Submit and go to review step
self.submit_and_go_to_review_step(step_builder, controls, result=CORRECT)
# Review step
self.check_viewport()
question_links = step_builder.find_elements_by_css_selector('.correct-list li a')
# - Review questions belonging to first step
question_links[2].click()
self.check_viewport()
# - Jump to review step
controls.review_link.click()
self.check_viewport()
# - Review questions belonging to last step
question_links[7].click()
self.check_viewport()
# - Jump to review step
controls.review_link.click()
self.check_viewport()
# - Review questions belonging to first step
question_links[2].click()
self.check_viewport()
# - Review questions belonging to last step
controls.next_question.click()
self.check_viewport()
# - Navigate to review step
controls.review.click()
self.check_viewport()
<step-builder url_name="step-builder" display_name="Step Builder"
max_attempts="1" extended_feedback="true">
<sb-step display_name="First step">
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
</sb-step>
<sb-step display_name="Second step">
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
<pb-answer name="goal" question="What is your goal?" />
</sb-step>
<sb-review-step>
<sb-review-score/>
</sb-review-step>
</step-builder>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment