class Gitlab::Styles::Rubocop::Cop::RSpec::VerboseIncludeMetadata

Checks for verbose include metadata used in the specs.

@example

# bad
describe MyClass, js: true do
end

# good
describe MyClass, :js do
end

Constants

MSG
SELECTORS

Public Instance Methods

on_send(node) click to toggle source
# File lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb, line 41
def on_send(node)
  invalid_metadata_matches(node) do |match|
    add_offense(node, message: format(MSG, good(match), bad(match))) do |corrector|
      invalid_metadata_matches(node) do |match|
        corrector.replace(match.loc.expression, good(match))
      end
    end
  end
end

Private Instance Methods

bad(match) click to toggle source
# File lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb, line 59
def bad(match)
  "#{metadata_key(match)}: true"
end
good(match) click to toggle source
# File lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb, line 63
def good(match)
  ":#{metadata_key(match)}"
end
invalid_metadata_matches(node, &block) click to toggle source
# File lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb, line 53
def invalid_metadata_matches(node, &block)
  include_metadata(node) do |matches|
    matches.select { |match| invalid_metadata?(match) }.each(&block)
  end
end
metadata_key(match) click to toggle source
# File lib/gitlab/styles/rubocop/cop/rspec/verbose_include_metadata.rb, line 67
def metadata_key(match)
  match.children[0].source
end