class RuboCop::RSpec::ExampleGroup

Wrapper for RSpec example groups

Public Instance Methods

examples() click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 29
def examples
  examples_in_scope(node).map(&Example.public_method(:new))
end
hooks() click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 33
def hooks
  hooks_in_scope(node).map(&Hook.public_method(:new))
end
subjects() click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 25
def subjects
  subjects_in_scope(node)
end

Private Instance Methods

examples_in_scope(node, &blk) click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 71
def examples_in_scope(node, &blk)
  node.each_child_node.flat_map do |child|
    find_examples(child, &blk)
  end
end
find_examples(node) click to toggle source

Recursively search for examples within the current scope

Searches node for examples and halts when a scope change is detected

@param node [RuboCop::Node] node to recursively search for examples

@return [Array<RuboCop::Node>] discovered example nodes

# File lib/rubocop/rspec/example_group.rb, line 84
def find_examples(node)
  return [] if scope_change?(node)

  if example?(node)
    [node]
  else
    examples_in_scope(node)
  end
end
find_hooks(node) click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 61
def find_hooks(node)
  return [] if scope_change?(node) || example?(node)

  if hook(node)
    [node]
  else
    hooks_in_scope(node)
  end
end
find_subjects(node) click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 45
def find_subjects(node)
  return [] if scope_change?(node)

  if subject(node)
    [node]
  else
    subjects_in_scope(node)
  end
end
hooks_in_scope(node) click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 55
def hooks_in_scope(node)
  node.each_child_node.flat_map do |child|
    find_hooks(child)
  end
end
subjects_in_scope(node) click to toggle source
# File lib/rubocop/rspec/example_group.rb, line 39
def subjects_in_scope(node)
  node.each_child_node.flat_map do |child|
    find_subjects(child)
  end
end