Module: RuboCop::Cop::Vicenzo::RSpec::PremiseTracking

Extended by:
AST::NodePattern::Macros
Includes:
RSpec::Language
Included in:
DerivedPremises, MutatedPremises
Defined in:
lib/rubocop/cop/vicenzo/rspec/mixin/premise_tracking.rb

Overview

Shared helpers to walk example groups keeping track of the premises (let, let!, let_it_be, subject) visible at each level, and to resolve which premise a call chain starts from.

Constant Summary collapse

SETUP_HOOKS =

Hooks that build the state an example starts from. after is left out on purpose: mutating there is teardown, not a premise.

%i[before around prepend_before append_before].freeze

Instance Method Summary collapse

Instance Method Details

#premise_name(node) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rubocop/cop/vicenzo/rspec/mixin/premise_tracking.rb', line 22

def_node_matcher :premise_name, <<~PATTERN
  (any_block
    (send nil?
      {
        {#Helpers.all :let_it_be :let_it_be!} ({str sym} $_)
        | #Subjects.all (sym $_)
        | $#Subjects.all
      }
      ...
    )
    ...
  )
PATTERN

#root_receiver_name(node) ⇒ Object

Name of the local call a chain starts from, e.g. :order for order.shipment.update!.



39
40
41
# File 'lib/rubocop/cop/vicenzo/rspec/mixin/premise_tracking.rb', line 39

def_node_matcher :root_receiver_name, <<~PATTERN
  (send nil? $_)
PATTERN