refactor actions

This commit is contained in:
Thomas Walpole 2016-11-22 10:45:15 -08:00
parent 49ed406b55
commit 344de61b9b
2 changed files with 28 additions and 55 deletions

View File

@ -229,7 +229,7 @@ Metrics/CyclomaticComplexity:
Description: >-
A complexity metric that is strongly correlated to the number
of test cases needed to validate a method.
Enabled: true
Enabled: false
Metrics/LineLength:
Description: 'Limit lines to 80 characters.'

View File

@ -112,24 +112,7 @@ module Capybara
#
# @return [Capybara::Node::Element] The element chosen or the label clicked
def choose(locator, options={})
locator, options = nil, locator if locator.is_a? Hash
allow_label_click = options.delete(:allow_label_click) { Capybara.automatic_label_click }
synchronize(Capybara::Queries::BaseQuery::wait(options)) do
begin
radio = find(:radio_button, locator, options)
radio.set(true)
rescue => e
raise unless allow_label_click && catch_error?(e)
begin
radio ||= find(:radio_button, locator, options.merge(visible: :all))
label = find(:label, for: radio, visible: true)
label.click unless radio.checked?
rescue
raise e
end
end
end
_check_with_label(:radio_button, true, locator, options)
end
##
@ -152,24 +135,7 @@ module Capybara
#
# @return [Capybara::Node::Element] The element checked or the label clicked
def check(locator, options={})
locator, options = nil, locator if locator.is_a? Hash
allow_label_click = options.delete(:allow_label_click) { Capybara.automatic_label_click }
synchronize(Capybara::Queries::BaseQuery::wait(options)) do
begin
cbox = find(:checkbox, locator, options)
cbox.set(true)
rescue => e
raise unless allow_label_click && catch_error?(e)
begin
cbox ||= find(:checkbox, locator, options.merge(visible: :all))
label = find(:label, for: cbox, visible: true)
label.click unless cbox.checked?
rescue
raise e
end
end
end
_check_with_label(:checkbox, true, locator, options)
end
##
@ -192,24 +158,7 @@ module Capybara
#
# @return [Capybara::Node::Element] The element unchecked or the label clicked
def uncheck(locator, options={})
locator, options = nil, locator if locator.is_a? Hash
allow_label_click = options.delete(:allow_label_click) { Capybara.automatic_label_click }
synchronize(Capybara::Queries::BaseQuery::wait(options)) do
begin
cbox = find(:checkbox, locator, options)
cbox.set(false)
rescue => e
raise unless allow_label_click && catch_error?(e)
begin
cbox ||= find(:checkbox, locator, options.merge(visible: :all))
label = find(:label, for: cbox, visible: true)
label.click if cbox.checked?
rescue
raise e
end
end
end
_check_with_label(:checkbox, false, locator, options)
end
##
@ -288,6 +237,30 @@ module Capybara
end
find(:file_field, locator, options).set(path)
end
private
def _check_with_label(selector, checked, locator, options)
locator, options = nil, locator if locator.is_a? Hash
allow_label_click = options.delete(:allow_label_click) { Capybara.automatic_label_click }
synchronize(Capybara::Queries::BaseQuery::wait(options)) do
begin
el = find(selector, locator, options)
el.set(checked)
rescue => e
raise unless allow_label_click && catch_error?(e)
begin
el ||= find(selector, locator, options.merge(visible: :all))
label = find(:label, for: el, visible: true)
label.click unless (el.checked? == checked)
rescue
raise e
end
end
end
end
end
end
end