class RuboCop::Cop::RSpec::DuplicatedMetadata

Avoid duplicated metadata.

@example

# bad
describe 'Something', :a, :a

# good
describe 'Something', :a

Constants

MSG

Public Instance Methods

on_metadata(symbols, _hash) click to toggle source
# File lib/rubocop/cop/rspec/duplicated_metadata.rb, line 22
def on_metadata(symbols, _hash)
  symbols.each do |symbol|
    on_metadata_symbol(symbol)
  end
end

Private Instance Methods

autocorrect(corrector, node) click to toggle source
# File lib/rubocop/cop/rspec/duplicated_metadata.rb, line 38
def autocorrect(corrector, node)
  corrector.remove(
    range_with_surrounding_comma(
      range_with_surrounding_space(
        node.source_range,
        side: :left
      ),
      :left
    )
  )
end
duplicated?(node) click to toggle source
# File lib/rubocop/cop/rspec/duplicated_metadata.rb, line 50
def duplicated?(node)
  node.left_siblings.any? do |sibling|
    sibling.eql?(node)
  end
end
on_metadata_symbol(node) click to toggle source
# File lib/rubocop/cop/rspec/duplicated_metadata.rb, line 30
def on_metadata_symbol(node)
  return unless duplicated?(node)

  add_offense(node) do |corrector|
    autocorrect(corrector, node)
  end
end