@@ -4,6 +4,17 @@ module RuboCop
44 module RSpec
55 # Wrapper for RSpec example groups
66 class ExampleGroup < Concept
7+ # Cop object may be passed into overriden constructor as additional param,
8+ # so we can call predicate on cop itself and will have access to #config
9+ # method in order to use configured language aliases for predicates.
10+ # If no predicate_receiver passed - predicate will be called on
11+ # ExampleGroup as if was before.
12+ def initialize ( node , predicate_receiver = self )
13+ @predicate_receiver = predicate_receiver
14+
15+ super ( node )
16+ end
17+
718 # @!method scope_change?(node)
819 #
920 # Detect if the node is an example group or shared example
@@ -32,11 +43,14 @@ def hooks
3243
3344 private
3445
46+ attr_reader :predicate_receiver
47+
3548 # Recursively search for predicate within the current scope
3649 #
3750 # Searches node and halts when a scope change is detected
3851 #
3952 # @param node [RuboCop::Node] node to recursively search
53+ # @param predicate [Symbol] method to call with node as argument
4054 #
4155 # @return [Array<RuboCop::Node>] discovered nodes
4256 def find_all_in_scope ( node , predicate )
@@ -46,7 +60,7 @@ def find_all_in_scope(node, predicate)
4660 end
4761
4862 def find_all ( node , predicate )
49- if public_send ( predicate , node )
63+ if predicate_receiver . public_send ( predicate , node )
5064 [ node ]
5165 elsif scope_change? ( node ) || example? ( node )
5266 [ ]
0 commit comments