module RuboCop::Cop::RSpec::CapybaraHelp
def include_option?(node, option)
-
(Boolean)
-
Parameters:
-
option
(Symbol
) -- -
node
(RuboCop::AST::SendNode
) --
def include_option?(node, option) node.each_descendant(:sym).find { |opt| opt.value == option } end
def replaceable_element?(node, element, attrs)
-
(Boolean)
-
Parameters:
-
attrs
(Array
) -- -
element
(String
) -- -
node
(RuboCop::AST::SendNode
) --
def replaceable_element?(node, element, attrs) case element when 'link' then replaceable_to_link?(node, attrs) else true end end
def replaceable_pseudo_class?(pseudo_class, locator)
-
(Boolean)
-
Parameters:
-
locator
(String
) -- -
pseudo_class
(String
) --
def replaceable_pseudo_class?(pseudo_class, locator) return false unless CssSelector.specific_pesudo_classes?(pseudo_class) case pseudo_class when 'not()' then replaceable_pseudo_class_not?(locator) else true end end
def replaceable_pseudo_class_not?(locator)
-
(Boolean)
-
Parameters:
-
locator
(String
) --
def replaceable_pseudo_class_not?(locator) locator.scan(/not\(.*?\)/).all? do |negation| CssSelector.attributes(negation).values.all? do |v| v.is_a?(TrueClass) || v.is_a?(FalseClass) end end end
def replaceable_to_link?(node, attrs)
-
(Boolean)
-
Parameters:
-
attrs
(Array
) -- -
node
(RuboCop::AST::SendNode
) --
def replaceable_to_link?(node, attrs) include_option?(node, :href) || attrs.include?('href') end
def specific_option?(node, locator, element)
-
(Boolean)
-
Parameters:
-
element
(String
) -- -
locator
(String
) -- -
node
(RuboCop::AST::SendNode
) --
def specific_option?(node, locator, element) attrs = CssSelector.attributes(locator).keys return false unless replaceable_element?(node, element, attrs) attrs.all? do |attr| CssSelector.specific_options?(element, attr) end end
def specific_pseudo_classes?(locator)
-
(Boolean)
-
Parameters:
-
locator
(String
) --
def specific_pseudo_classes?(locator) CssSelector.pseudo_classes(locator).all? do |pseudo_class| replaceable_pseudo_class?(pseudo_class, locator) end end