67 lines
1.9 KiB
Ruby
67 lines
1.9 KiB
Ruby
module JsHelpers
|
|
def js_set_date(selector, value = '')
|
|
js_set_field selector, value
|
|
end
|
|
|
|
def js_set_field(selector, value = '')
|
|
find selector
|
|
page.execute_script("$('#{selector}').val('#{value}')")
|
|
end
|
|
|
|
def toggle_optional_input_for(attr)
|
|
js_click ".optional-input-activator-container.#{attr} .optional-input-activator-toggle"
|
|
end
|
|
|
|
def toggle_optional_text_field_for(attr)
|
|
js_click ".optional-text-field-activator-container.#{attr} .optional-input-activator-toggle"
|
|
end
|
|
|
|
def set_optional_value(attr, value='')
|
|
selector = ".optional-attribute-container.#{attr} input"
|
|
find selector
|
|
js_set_field selector, value
|
|
end
|
|
|
|
# Activate the boolean checkbox
|
|
def toggle_optional_boolean_activator_for(attr)
|
|
js_click ".optional-attribute-container.optional-boolean.#{attr} .optional-boolean-activator-toggle"
|
|
end
|
|
|
|
# Check the boolean checkbox
|
|
def toggle_optional_boolean_for(attr)
|
|
selector = ".optional-attribute-container.optional-boolean.#{attr} .optional-boolean-toggle"
|
|
js_click selector
|
|
end
|
|
|
|
# Trigger a click event through javascript. Use this to avoid waiting for
|
|
# javascript events issues
|
|
def js_click(selector)
|
|
find(selector) # wait for the page to contain the selector
|
|
page.execute_script("$('#{selector}').click()")
|
|
|
|
# wait for triggered ajax requests to be finished
|
|
steps = 0
|
|
while page.evaluate_script('$.active').to_i > 0 and steps < 25
|
|
sleep 0.1
|
|
steps += 1
|
|
end
|
|
end
|
|
|
|
def expect_path_bo_be(path)
|
|
steps = 0
|
|
while page.current_path != path and steps < 15
|
|
sleep 0.1
|
|
steps += 1
|
|
end
|
|
expect( page.current_path ).to eq path
|
|
end
|
|
|
|
# Wait for the database to have finished the update stuff, then reload
|
|
# the models. Threading might give inconsistent data
|
|
def reload_model(*models)
|
|
models.each &:reload
|
|
end
|
|
alias_method :reload_models, :reload_model
|
|
end
|
|
|