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