Class: RspecDatabaseHelper::ClassMethods::DatabaseDSLTranslator

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec_database_helper.rb

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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