module RuboCop::Cop::RSpec::TopLevelGroup

Helper methods for top level example group cops

Public Instance Methods

on_new_investigation() click to toggle source
Calls superclass method
# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 10
def on_new_investigation
  super

  top_level_groups.each do |node|
    on_top_level_example_group(node) if example_group?(node)
    on_top_level_group(node)
  end
end
top_level_groups() click to toggle source
# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 19
def top_level_groups
  @top_level_groups ||=
    top_level_nodes(root_node).select { |n| spec_group?(n) }
end

Private Instance Methods

on_top_level_example_group(_node) click to toggle source

Dummy methods to be overridden in the consumer

# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 27
def on_top_level_example_group(_node); end
on_top_level_group(_node) click to toggle source
# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 29
def on_top_level_group(_node); end
root_node() click to toggle source
# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 48
def root_node
  processed_source.ast
end
top_level_group?(node) click to toggle source
# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 31
def top_level_group?(node)
  top_level_groups.include?(node)
end
top_level_nodes(node) click to toggle source
# File lib/rubocop/cop/rspec/mixin/top_level_group.rb, line 35
def top_level_nodes(node)
  return [] if node.nil?

  case node.type
  when :begin
    node.children
  when :module, :class
    top_level_nodes(node.body)
  else
    [node]
  end
end