class RuboCop::Cop::RSpec::LetSetup

Checks unreferenced ‘let!` calls being used for test setup.

@example

# bad
let!(:my_widget) { create(:widget) }

it 'counts widgets' do
  expect(Widget.count).to eq(1)
end

# good
it 'counts widgets' do
  create(:widget)
  expect(Widget.count).to eq(1)
end

# good
before { create(:widget) }

it 'counts widgets' do
  expect(Widget.count).to eq(1)
end

Constants

MSG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/rspec/let_setup.rb, line 50
def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
  return unless example_or_shared_group_or_including?(node)

  unused_let_bang(node) do |let|
    add_offense(let)
  end
end

Private Instance Methods

child_let_bang(node, &block) click to toggle source
# File lib/rubocop/cop/rspec/let_setup.rb, line 66
def child_let_bang(node, &block)
  RuboCop::RSpec::ExampleGroup.new(node).lets.each do |let|
    let_bang(let, &block)
  end
end
unused_let_bang(node) { |method_send| ... } click to toggle source
# File lib/rubocop/cop/rspec/let_setup.rb, line 60
def unused_let_bang(node)
  child_let_bang(node) do |method_send, method_name|
    yield(method_send) unless method_called?(node, method_name.to_sym)
  end
end