class RuboCop::Cop::RSpec::FactoryBot::FactoryNameStyle


build “user”, username: “NAME”
create(‘user’)
# good
build :user, username: “NAME”
create(:user)
# bad
@example EnforcedStyle: string
build :user, username: “NAME”
create(:user)
# good
build “user”, username: “NAME”
create(‘user’)
# bad
@example EnforcedStyle: symbol (default)
Checks for name style for argument of FactoryBot::Syntax::Methods.

def offense_for_string_style?(name)

def offense_for_string_style?(name)
  name.sym_type? && style == :string
end

def offense_for_symbol_style?(name)

def offense_for_symbol_style?(name)
  name.str_type? && style == :symbol
end

def on_send(node)

def on_send(node)
  factory_call(node) do |name|
    if offense_for_symbol_style?(name)
      register_offense(name, name.value.to_sym.inspect)
    elsif offense_for_string_style?(name)
      register_offense(name, name.value.to_s.inspect)
    end
  end
end

def register_offense(name, prefer)

def register_offense(name, prefer)
  add_offense(name,
              message: format(MSG, prefer: style.to_s)) do |corrector|
    corrector.replace(name, prefer)
  end
end