module TestProf::FactoryDefault

FactoryDefault allows use to re-use associated objects in factories implicilty

Attributes

preserve_traits[RW]
store[R]

Public Class Methods

get(name, traits = nil) click to toggle source
# File lib/test_prof/factory_default.rb, line 45
def get(name, traits = nil)
  record = store[name]
  return unless record

  if traits && !traits.empty?
    return if FactoryDefault.preserve_traits || record[:preserve_traits]
  end
  record[:object]
end
init() click to toggle source
# File lib/test_prof/factory_default.rb, line 27
def init
  TestProf::FactoryBot::Syntax::Methods.include DefaultSyntax
  TestProf::FactoryBot.extend DefaultSyntax
  TestProf::FactoryBot::Strategy::Create.prepend StrategyExt
  TestProf::FactoryBot::Strategy::Build.prepend StrategyExt
  TestProf::FactoryBot::Strategy::Stub.prepend StrategyExt

  @store = {}
  # default is false to retain backward compatibility
  @preserve_traits = false
end
register(name, obj, **options) click to toggle source
# File lib/test_prof/factory_default.rb, line 39
def register(name, obj, **options)
  options[:preserve_traits] = true if FactoryDefault.preserve_traits
  store[name] = {object: obj, **options}
  obj
end
remove(name) click to toggle source
# File lib/test_prof/factory_default.rb, line 55
def remove(name)
  store.delete(name)
end
reset() click to toggle source
# File lib/test_prof/factory_default.rb, line 59
def reset
  @store.clear
end