module FactoryTrace::MonkeyPatches::Default::DSL

Public Instance Methods

factory(name, options = {}, &block) click to toggle source
# File lib/factory_trace/monkey_patches/dsl.rb, line 5
def factory(name, options = {}, &block)
  caller_location = options.delete(:caller_location) || Helpers::Caller.location
  factory = FactoryBot::Factory.new(name, caller_location, options)
  proxy = FactoryBot::DefinitionProxy.new(factory.definition)
  proxy.instance_eval(&block) if block_given?

  REGISTER.register_factory(factory)

  proxy.child_factories.each do |(child_name, child_caller_location, child_options, child_block)|
    parent_factory = child_options.delete(:parent) || name
    factory(child_name, child_options.merge(parent: parent_factory, caller_location: child_caller_location), &child_block)
  end
end
trait(name, &block) click to toggle source
# File lib/factory_trace/monkey_patches/dsl.rb, line 19
def trait(name, &block)
  REGISTER.register_trait(FactoryBot::Trait.new(name, Helpers::Caller.location, &block))
end