Class: RuboCop::Cop::RSpec::FactoryBot::CreateList

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
ConfigurableEnforcedStyle
Defined in:
lib/rubocop/cop/rspec/factory_bot/create_list.rb

Overview

Checks for create_list usage.

This cop can be configured using the ‘EnforcedStyle` option

Examples:

‘EnforcedStyle: create_list`

# bad
3.times { create :user }

# good
create_list :user, 3

# good
3.times { |n| create :user, created_at: n.months.ago }

‘EnforcedStyle: n_times`

# bad
create_list :user, 3

# good
3.times { create :user }

Defined Under Namespace

Modules: Corrector Classes: CreateListCorrector, TimesCorrector

Constant Summary collapse

MSG_CREATE_LIST =
'Prefer create_list.'
MSG_N_TIMES =
'Prefer %<number>s.times.'

Instance Method Summary collapse

Methods inherited from Base

inherited, #on_new_investigation

Methods included from RSpec::Language::NodePattern

#block_pattern, #send_pattern

Instance Method Details

#on_block(node) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/rubocop/cop/rspec/factory_bot/create_list.rb', line 50

def on_block(node)
  return unless style == :create_list
  return unless n_times_block_without_arg?(node)
  return unless contains_only_factory?(node.body)

  add_offense(node.send_node, message: MSG_CREATE_LIST) do |corrector|
    CreateListCorrector.new(node.send_node).call(corrector)
  end
end

#on_send(node) ⇒ Object



60
61
62
63
64
65
66
67
68
69
# File 'lib/rubocop/cop/rspec/factory_bot/create_list.rb', line 60

def on_send(node)
  return unless style == :n_times

  factory_list_call(node) do |count|
    message = format(MSG_N_TIMES, number: count)
    add_offense(node.loc.selector, message: message) do |corrector|
      TimesCorrector.new(node).call(corrector)
    end
  end
end