class Factories::BaseFactory
Public Class Methods
build(opts = {})
click to toggle source
# File lib/factories/base_factory.rb, line 9 def self.build(opts = {}) new(opts).build end
create(opts = {})
click to toggle source
# File lib/factories/base_factory.rb, line 5 def self.create(opts = {}) new(opts).create end
defaults(&blk)
click to toggle source
# File lib/factories/base_factory.rb, line 29 def self.defaults(&blk) define_method(:defaults, &blk) end
model_class(klass = nil)
click to toggle source
# File lib/factories/base_factory.rb, line 13 def self.model_class(klass = nil) if klass @model_class = klass else @model_class ||= Inflecto.constantize(Inflecto.demodulize(name.gsub(/Factory$/, ''))) end end
new(opts = {})
click to toggle source
# File lib/factories/base_factory.rb, line 33 def initialize(opts = {}) @opts = opts @attributes = defaults.merge(opts) end
Public Instance Methods
build()
click to toggle source
# File lib/factories/base_factory.rb, line 42 def build model_class.new.tap do |instance| attrs = expand_procs @attributes, instance instance.assign_attributes attrs end end
create()
click to toggle source
# File lib/factories/base_factory.rb, line 38 def create build.tap { |instance| instance.save || raise("Factory model did not save") } end
defaults()
click to toggle source
# File lib/factories/base_factory.rb, line 25 def defaults raise "not implimented" end
model_class()
click to toggle source
# File lib/factories/base_factory.rb, line 21 def model_class self.class.model_class end
Private Instance Methods
expand_procs(hash, instance)
click to toggle source
# File lib/factories/base_factory.rb, line 51 def expand_procs(hash, instance) hash.each_with_object({}) do |(k, v), h| v = if v.is_a?(Proc) if v.arity == 1 v.call(instance) else v.call end else v end h[k] = v end end