Merge pull request #1294 from edx/anton/fix-multiple-lti-per-page
LTI: Add possibility to use multiple LTI tools per page.
This commit is contained in:
@@ -5,6 +5,8 @@ These are notable changes in edx-platform. This is a rolling list of changes,
|
||||
in roughly chronological order, most recent first. Add your entries at or near
|
||||
the top. Include a label indicating the component affected.
|
||||
|
||||
Blades: Add possibility to use multiple LTI tools per page.
|
||||
|
||||
LMS: Disable data download buttons on the instructor dashboard for large courses
|
||||
|
||||
LMS: Ported bulk emailing to the beta instructor dashboard.
|
||||
|
||||
@@ -92,10 +92,10 @@ class LTIModule(LTIFields, XModule):
|
||||
|
||||
<form
|
||||
action="${launch_url}"
|
||||
name="ltiLaunchForm"
|
||||
name="ltiLaunchForm-${element_id}"
|
||||
class="ltiLaunchForm"
|
||||
method="post"
|
||||
target="ltiLaunchFrame"
|
||||
target="ltiLaunchFrame-${element_id}"
|
||||
encType="application/x-www-form-urlencoded"
|
||||
>
|
||||
<input name="launch_presentation_return_url" value="" />
|
||||
|
||||
@@ -19,8 +19,11 @@ def lti_is_not_rendered(_step):
|
||||
# iframe is not visible
|
||||
assert not world.css_visible('iframe')
|
||||
|
||||
location = world.scenario_dict['LTI'].location.html_id()
|
||||
iframe_name = 'ltiLaunchFrame-' + location
|
||||
|
||||
#inside iframe test content is not presented
|
||||
with world.browser.get_iframe('ltiLaunchFrame') as iframe:
|
||||
with world.browser.get_iframe(iframe_name) as iframe:
|
||||
# iframe does not contain functions from terrain/ui_helpers.py
|
||||
world.browser.driver.implicitly_wait(1)
|
||||
try:
|
||||
@@ -31,6 +34,19 @@ def lti_is_not_rendered(_step):
|
||||
world.browser.driver.implicitly_wait(world.IMPLICIT_WAIT)
|
||||
|
||||
|
||||
def check_lti_ifarme_content(text):
|
||||
#inside iframe test content is presented
|
||||
location = world.scenario_dict['LTI'].location.html_id()
|
||||
iframe_name = 'ltiLaunchFrame-' + location
|
||||
with world.browser.get_iframe(iframe_name) as iframe:
|
||||
# iframe does not contain functions from terrain/ui_helpers.py
|
||||
assert iframe.is_element_present_by_css('.result', wait_time=5)
|
||||
assert (text == world.retry_on_exception(
|
||||
lambda: iframe.find_by_css('.result')[0].text,
|
||||
max_attempts=5
|
||||
))
|
||||
|
||||
|
||||
@step('I view the LTI and it is rendered$')
|
||||
def lti_is_rendered(_step):
|
||||
# lti div has class rendered
|
||||
@@ -41,15 +57,7 @@ def lti_is_rendered(_step):
|
||||
|
||||
# iframe is visible
|
||||
assert world.css_visible('iframe')
|
||||
|
||||
#inside iframe test content is presented
|
||||
with world.browser.get_iframe('ltiLaunchFrame') as iframe:
|
||||
# iframe does not contain functions from terrain/ui_helpers.py
|
||||
assert iframe.is_element_present_by_css('.result', wait_time=5)
|
||||
assert ("This is LTI tool. Success." == world.retry_on_exception(
|
||||
lambda: iframe.find_by_css('.result')[0].text,
|
||||
max_attempts=5
|
||||
))
|
||||
check_lti_ifarme_content("This is LTI tool. Success.")
|
||||
|
||||
|
||||
@step('I view the LTI but incorrect_signature warning is rendered$')
|
||||
@@ -62,15 +70,7 @@ def incorrect_lti_is_rendered(_step):
|
||||
|
||||
# iframe is visible
|
||||
assert world.css_visible('iframe')
|
||||
|
||||
#inside iframe test content is presented
|
||||
with world.browser.get_iframe('ltiLaunchFrame') as iframe:
|
||||
# iframe does not contain functions from terrain/ui_helpers.py
|
||||
assert iframe.is_element_present_by_css('.result', wait_time=5)
|
||||
assert ("Wrong LTI signature" == world.retry_on_exception(
|
||||
lambda: iframe.find_by_css('.result')[0].text,
|
||||
max_attempts=5
|
||||
))
|
||||
check_lti_ifarme_content("Wrong LTI signature")
|
||||
|
||||
|
||||
@step('the course has correct LTI credentials$')
|
||||
@@ -100,7 +100,7 @@ def set_incorrect_lti_passport(_step):
|
||||
@step('the course has an LTI component filled with correct fields$')
|
||||
def add_correct_lti_to_course(_step):
|
||||
category = 'lti'
|
||||
world.ItemFactory.create(
|
||||
world.scenario_dict['LTI'] = world.ItemFactory.create(
|
||||
# parent_location=section_location(course),
|
||||
parent_location=world.scenario_dict['SEQUENTIAL'].location,
|
||||
category=category,
|
||||
@@ -128,7 +128,7 @@ def add_correct_lti_to_course(_step):
|
||||
@step('the course has an LTI component with incorrect fields$')
|
||||
def add_incorrect_lti_to_course(_step):
|
||||
category = 'lti'
|
||||
world.ItemFactory.create(
|
||||
world.scenario_dict['LTI'] = world.ItemFactory.create(
|
||||
parent_location=world.scenario_dict['SEQUENTIAL'].location,
|
||||
category=category,
|
||||
display_name='LTI',
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
## result will be rendered to the below iFrame.
|
||||
<form
|
||||
action="${launch_url}"
|
||||
name="ltiLaunchForm"
|
||||
name="ltiLaunchForm-${element_id}"
|
||||
class="ltiLaunchForm"
|
||||
method="post"
|
||||
target="ltiLaunchFrame"
|
||||
target="ltiLaunchFrame-${element_id}"
|
||||
encType="application/x-www-form-urlencoded"
|
||||
>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
## The result of the form submit will be rendered here.
|
||||
<iframe
|
||||
name="ltiLaunchFrame"
|
||||
name="ltiLaunchFrame-${element_id}"
|
||||
class="ltiLaunchFrame"
|
||||
src=""
|
||||
></iframe>
|
||||
|
||||
Reference in New Issue
Block a user