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