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