module TestProf::FactoryDefault::FactoryBotPatch::SyntaxExt

def create_default(name, *args, &block)

def create_default(name, *args, &block)
  options = args.extract_options!
  default_options = {}
  default_options[:preserve_traits] = options.delete(:preserve_traits) if options.key?(:preserve_traits)
  default_options[:preserve_attributes] = options.delete(:preserve_attributes) if options.key?(:preserve_attributes)
  obj = TestProf::FactoryBot.create(name, *args, options, &block)
  # Factory with traits
  name = [name, *args] if args.any?
  set_factory_default(name, obj, **default_options)
end

def get_factory_default(name, *traits, **overrides)

def get_factory_default(name, *traits, **overrides)
  FactoryDefault.get(name, traits, overrides, skip_stats: true)
end

def set_factory_default(*name, obj, preserve_traits: FactoryDefault.config.preserve_traits, preserve_attributes: FactoryDefault.config.preserve_attributes, **other)

def set_factory_default(*name, obj, preserve_traits: FactoryDefault.config.preserve_traits, preserve_attributes: FactoryDefault.config.preserve_attributes, **other)
  name = name.first if name.size == 1
  FactoryDefault.register(
    name, obj,
    preserve_traits: preserve_traits,
    preserve_attributes: preserve_attributes,
    **other
  )
end

def skip_factory_default(&block)

def skip_factory_default(&block)
  FactoryDefault.disable!(&block)
end