class RspecDatabaseHelper::ClassMethods::DatabaseDSLTranslator

Public Instance Methods

on_send(node) click to toggle source
# File lib/rspec_database_helper.rb, line 12
def on_send(node)
  _, method_name, *args = node.children

  factory_attrs = args.map { |e| e.loc.expression.source }.join(', ')
  factory_class = 'FactoryGirl' if defined?(FactoryGirl)
  factory_class = 'FactoryBot' if defined?(FactoryBot)

  case method_name
  when /list!$/
    replace(node.loc.expression, "let!(:#{method_name.to_s.sub(/_list!$/,'')}) { #{factory_class}.create_list(#{factory_attrs}) }")
  when /list$/
    replace(node.loc.expression, "let(:#{method_name.to_s.sub(/_list$/,'')}) { #{factory_class}.create_list(#{factory_attrs}) }")
  when /!$/
    replace(node.loc.expression, "let!(:#{method_name.to_s.sub(/!$/,'')}) { #{factory_class}.create(#{factory_attrs}) }")
  else
    replace(node.loc.expression, "let(:#{method_name}) { #{factory_class}.create(#{factory_attrs}) }")
  end
end