Sha256: 45526aa6339715fdfd89f661c4711ed311150da4e791fd25592af337baaaa05e
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module RSpec # 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 class LetSetup < Cop include RuboCop::RSpec::SpecOnly, RuboCop::RSpec::TopLevelDescribe, RuboCop::RSpec::Language, RuboCop::RSpec::Language::NodePattern MSG = 'Do not use `let!` for test setup.'.freeze def_node_search :let_bang, '(block $(send nil :let! (sym $_)) args ...)' def_node_search :method_called?, '(send nil %)' def on_block(node) return unless example_group?(node) unused_let_bang(node) do |let| add_offense(let, :expression) end end private def unused_let_bang(node) let_bang(node) do |method_send, method_name| yield(method_send) unless method_called?(node, method_name) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubocop-rspec-1.8.0 | lib/rubocop/cop/rspec/let_setup.rb |
rubocop-rspec-1.7.0 | lib/rubocop/cop/rspec/let_setup.rb |