lib/rubocop/cop/rspec/capybara/visibility_matcher.rb in rubocop-rspec-2.17.1 vs lib/rubocop/cop/rspec/capybara/visibility_matcher.rb in rubocop-rspec-2.18.0

- old
+ new

@@ -2,72 +2,35 @@ module RuboCop module Cop module RSpec module Capybara - # Checks for boolean visibility in Capybara finders. - # - # Capybara lets you find elements that match a certain visibility using - # the `:visible` option. `:visible` accepts both boolean and symbols as - # values, however using booleans can have unwanted effects. `visible: - # false` does not find just invisible elements, but both visible and - # invisible elements. For expressiveness and clarity, use one of the - # symbol values, `:all`, `:hidden` or `:visible`. - # Read more in - # https://www.rubydoc.info/gems/capybara/Capybara%2FNode%2FFinders:all[the documentation]. - # - # @example - # # bad - # expect(page).to have_selector('.foo', visible: false) - # expect(page).to have_css('.foo', visible: true) - # expect(page).to have_link('my link', visible: false) - # - # # good - # expect(page).to have_selector('.foo', visible: :visible) - # expect(page).to have_css('.foo', visible: :all) - # expect(page).to have_link('my link', visible: :hidden) - # - class VisibilityMatcher < ::RuboCop::Cop::Base - MSG_FALSE = 'Use `:all` or `:hidden` instead of `false`.' - MSG_TRUE = 'Use `:visible` instead of `true`.' - CAPYBARA_MATCHER_METHODS = %w[ - button - checked_field - css - field - link - select - selector - table - unchecked_field - xpath - ].flat_map do |element| - ["have_#{element}".to_sym, "have_no_#{element}".to_sym] - end - - RESTRICT_ON_SEND = CAPYBARA_MATCHER_METHODS - - # @!method visible_true?(node) - def_node_matcher :visible_true?, <<~PATTERN - (send nil? #capybara_matcher? ... (hash <$(pair (sym :visible) true) ...>)) - PATTERN - - # @!method visible_false?(node) - def_node_matcher :visible_false?, <<~PATTERN - (send nil? #capybara_matcher? ... (hash <$(pair (sym :visible) false) ...>)) - PATTERN - - def on_send(node) - visible_false?(node) { |arg| add_offense(arg, message: MSG_FALSE) } - visible_true?(node) { |arg| add_offense(arg, message: MSG_TRUE) } - end - - private - - def capybara_matcher?(method_name) - CAPYBARA_MATCHER_METHODS.include? method_name - end - end + # @!parse + # # Checks for boolean visibility in Capybara finders. + # # + # # Capybara lets you find elements that match a certain visibility + # # using the `:visible` option. `:visible` accepts both boolean and + # # symbols as values, however using booleans can have unwanted + # # effects. `visible: false` does not find just invisible elements, + # # but both visible and invisible elements. For expressiveness and + # # clarity, use one of the # symbol values, `:all`, `:hidden` or + # # `:visible`. + # # Read more in + # # https://www.rubydoc.info/gems/capybara/Capybara%2FNode%2FFinders:all[the documentation]. + # # + # # @example + # # # bad + # # expect(page).to have_selector('.foo', visible: false) + # # expect(page).to have_css('.foo', visible: true) + # # expect(page).to have_link('my link', visible: false) + # # + # # # good + # # expect(page).to have_selector('.foo', visible: :visible) + # # expect(page).to have_css('.foo', visible: :all) + # # expect(page).to have_link('my link', visible: :hidden) + # # + # class VisibilityMatcher < ::RuboCop::Cop::Base; end + VisibilityMatcher = ::RuboCop::Cop::Capybara::VisibilityMatcher end end end end