module RuboCop::RSpec::TopLevelDescribe

Helper methods for top level describe cops

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/rspec/top_level_describe.rb, line 13
def on_send(node)
  return unless respond_to?(:on_top_level_describe)
  return unless top_level_describe?(node)

  on_top_level_describe(node, node.arguments)
end

Private Instance Methods

describe_statement_children(node) click to toggle source
# File lib/rubocop/rspec/top_level_describe.rb, line 49
def describe_statement_children(node)
  node.each_child_node(:send).select do |element|
    element.method_name == :describe
  end
end
root_node() click to toggle source
# File lib/rubocop/rspec/top_level_describe.rb, line 41
def root_node
  processed_source.ast
end
single_top_level_describe?() click to toggle source
# File lib/rubocop/rspec/top_level_describe.rb, line 45
def single_top_level_describe?
  top_level_nodes.one?
end
top_level_describe?(node) click to toggle source
# File lib/rubocop/rspec/top_level_describe.rb, line 22
def top_level_describe?(node)
  return false unless node.method_name == :describe

  top_level_nodes.include?(node)
end
top_level_nodes() click to toggle source
# File lib/rubocop/rspec/top_level_describe.rb, line 28
def top_level_nodes
  nodes = describe_statement_children(root_node)
  # If we have no top level describe statements, we need to check any
  # blocks on the top level (e.g. after a require).
  if nodes.empty?
    nodes = root_node.each_child_node(:block).flat_map do |child|
      describe_statement_children(child)
    end
  end

  nodes
end