Module: FactoryCustomizer

Included in:
FactoryBoy::Factory
Defined in:
lib/factory_boy/factory_customizer.rb

Instance Method Summary collapse

Instance Method Details

#factory_girl(name, options = {}, &block) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/factory_boy/factory_customizer.rb', line 14

def factory_girl(name, options = {}, &block)
  build_or_create = !options[:create]
  factory_name = options[:factory] || name
  factory_call = Proc.new {
    build_or_create ? FactoryGirl.build(factory_name) : FactoryGirl.create(factory_name)
  }
  set_method(name, {}, &(block || factory_call))
end

#register_callback(execution_precedence, *on_calls, &block) ⇒ Object



23
24
25
26
27
# File 'lib/factory_boy/factory_customizer.rb', line 23

def register_callback(execution_precedence, *on_calls, &block)
  on_calls.each do |on_call|
    FactoryBoy.register_callback(self.factory_name, execution_precedence, on_call, &block)
  end
end

#set_method(name, options = {}, &method_return_block) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/factory_boy/factory_customizer.rb', line 4

def set_method(name, options = {}, &method_return_block)
  method_return_block ||= Proc.new { options[:return] }
  proc = Proc.new { |name, method_return|
    self.define_singleton_method(name) do
      method_return.call
    end
  }
  self.instance_exec(name, method_return_block, &proc)
end