Sha256: ba59329379cf573bc01032a0102848e546d0a5d666028d63050489d1ff722353

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    module Workit
      # Checks for usage of deprecated style methods.
      #
      # @example when using `assert_style`
      #   # bad
      #   page.find(:css, '#first').assert_style(display: 'block')
      #
      #   # good
      #   page.find(:css, '#first').assert_matches_style(display: 'block')
      #
      # @example when using `has_style?`
      #   # bad
      #   expect(page.find(:css, 'first')
      #     .has_style?(display: 'block')).to be true
      #
      #   # good
      #   expect(page.find(:css, 'first')
      #     .matches_style?(display: 'block')).to be true
      #
      # @example when using `have_style`
      #   # bad
      #   expect(page).to have_style(display: 'block')
      #
      #   # good
      #   expect(page).to match_style(display: 'block')
      #
      class RSpecCapybaraMatchStyle < Base
        extend AutoCorrector

        MSG = "Use `%<good>s` instead of `%<bad>s`."
        RESTRICT_ON_SEND = %i[assert_style has_style? have_style].freeze
        PREFERRED_METHOD = {
          "assert_style" => "assert_matches_style",
          "has_style?" => "matches_style?",
          "have_style" => "match_style"
        }.freeze

        def on_send(node)
          method_node = node.loc.selector
          add_offense(method_node) do |corrector|
            corrector.replace(method_node,
                              PREFERRED_METHOD[method_node.source])
          end
        end

        private

        def message(node)
          format(MSG, good: PREFERRED_METHOD[node.source], bad: node.source)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
workitcop-0.5.0 lib/rubocop/cop/workit/rspec_capybara_match_style.rb
workitcop-0.4.2 lib/rubocop/cop/workit/rspec_capybara_match_style.rb
workitcop-0.4.0 lib/rubocop/cop/workit/rspec_capybara_match_style.rb