class RuboCop::Cop::RSpec::FactoryBot::FactoryClassName

Use string value when setting the class attribute explicitly.

This cop would promote faster tests by lazy-loading of application files. Also, this could help you suppress potential bugs in combination with external libraries by avoiding a preload of application files from the factory files.

@example

# bad
factory :foo, class: Foo do
end

# good
factory :foo, class: 'Foo' do
end

Constants

ALLOWED_CONSTANTS
MSG
RESTRICT_ON_SEND

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb, line 35
def on_send(node)
  class_name(node) do |cn|
    next if allowed?(cn.const_name)

    msg = format(MSG, class_name: cn.const_name)
    add_offense(cn, message: msg) do |corrector|
      corrector.replace(cn, "'#{cn.source}'")
    end
  end
end

Private Instance Methods

allowed?(const_name) click to toggle source
# File lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb, line 48
def allowed?(const_name)
  ALLOWED_CONSTANTS.include?(const_name)
end