lib/rubocop/cop/rspec/describe_class.rb in rubocop-rspec-1.2.2 vs lib/rubocop/cop/rspec/describe_class.rb in rubocop-rspec-1.3.0

- old
+ new

@@ -12,18 +12,32 @@ # end # # # good # describe TestedClass do # end + # + # describe "A feature example", type: :feature do + # end class DescribeClass < Cop include RuboCop::RSpec::TopLevelDescribe + REQUEST_PAIR = s(:pair, s(:sym, :type), s(:sym, :request)) + FEATURE_PAIR = s(:pair, s(:sym, :type), s(:sym, :feature)) + MESSAGE = 'The first argument to describe should be the class or ' \ 'module being tested.' def on_top_level_describe(_node, args) - return if args.first && args.first.type == :const - add_offense(args.first, :expression, MESSAGE) + return if args[0] && args[0].type == :const + + return if args[1..-1].any? do |arg| + next unless arg.hash_type? + arg.children.any? do |n| + [REQUEST_PAIR, FEATURE_PAIR].include?(n) + end + end + + add_offense(args[0], :expression, MESSAGE) end end end end end