class RuboCop::Cop::RSpec::DescribeClass


end
describe “A feature example”, type: :feature do
end
subject { Object.const_get(self.class.description) }
describe ‘TestedClass::VERSION’ do
end
subject { described_class }
describe TestedClass do
# good
end
describe ‘Do something’ do
# bad
@example
# - controller
# - request
# type:
# IgnoredMetadata:
# RSpec/DescribeClass:
# .rubocop.yml
@example ‘IgnoredMetadata` configuration
Ignores Rails and Aruba `type` metadata by default.
It can be configured to ignore strings when certain metadata is passed.
Check that the first argument to the top-level describe is a constant.

def ignored_metadata

def ignored_metadata
  cop_config['IgnoredMetadata'] || {}
end

def ignored_metadata?(node)

def ignored_metadata?(node)
  sym_pair(node) do |key, value|
    ignored_metadata[key.value.to_s].to_a.include?(value.value.to_s)
  end
end

def on_top_level_group(node)

def on_top_level_group(node)
  return if example_group_with_ignored_metadata?(node.send_node)
  not_a_const_described(node.send_node) do |described|
    add_offense(described)
  end
end

def string_constant?(described)

def string_constant?(described)
  described.str_type? &&
    described.value.match?(/^(?:(?:::)?[A-Z]\w*)+$/)
end