class Mockumentary::Model

Constants

DUMP_NAME

Public Class Methods

build(klass) click to toggle source
# File lib/mockumentary/model.rb, line 32
    def self.build(klass)
      class_eval <<-RUBY
        class #{container_name}::#{klass} < #{container_name}; end
        classes << #{container_name}::#{klass}
      RUBY
    end
classes() click to toggle source
# File lib/mockumentary/model.rb, line 28
def self.classes
  @classes ||= []
end
constantize(klass) click to toggle source
# File lib/mockumentary/model.rb, line 43
def self.constantize(klass)
  classes.detect{|c| c.to_s == "#{container_name}::#{klass}"}
end
evaluate(opts) click to toggle source
# File lib/mockumentary/model.rb, line 73
def self.evaluate(opts)
  opts.inject({}) do |result, arr|
    result[arr.first] = fake_data(arr.last)
    result
  end
end
fake_data(key) click to toggle source
# File lib/mockumentary/model.rb, line 57
def self.fake_data(key)
  data = Mockumentary::Data.generate(key)

  unless data
    data  = if key == :uid
      uid
    elsif key.respond_to?(:call)
      key.respond_to?(:call) 
    else
      key
    end
  end

  data
end
generate(klass) click to toggle source
# File lib/mockumentary/model.rb, line 5
def self.generate(klass)
  mock_class = constantize klass
  build klass unless mock_class
  mock_class ||= constantize klass
end
init_defaults() click to toggle source
# File lib/mockumentary/model.rb, line 11
def self.init_defaults
  @init_defaults ||= {
    :new_record => true
  }
end
init_opts() click to toggle source
# File lib/mockumentary/model.rb, line 87
def self.init_opts
  opts = init_defaults.dup
  opts.merge!(overrides[:init]) if overrides && overrides[:init]
  evaluate(opts)
end
mock(opts={}) click to toggle source
# File lib/mockumentary/model.rb, line 106
def self.mock(opts={})
  new(mock_opts.merge(opts))
end
mock!(opts={}) click to toggle source
# File lib/mockumentary/model.rb, line 110
def self.mock!(opts={})
  instance = mock(opts)
  instance.save(opts)
end
mock_defaults() click to toggle source
# File lib/mockumentary/model.rb, line 17
def self.mock_defaults
  @mock_defaults ||= {}
end
mock_opts() click to toggle source
# File lib/mockumentary/model.rb, line 80
def self.mock_opts
  opts = init_defaults.dup
  opts.merge!(mock_defaults)
  opts.merge!(overrides[:mock]) if overrides && overrides[:mock]
  evaluate(opts)
end
new(opts={}) click to toggle source
Calls superclass method
# File lib/mockumentary/model.rb, line 99
def initialize(opts={})
  super(self.class.init_opts.merge(opts))
  self.class.relationships.each do |key, value|
    send("#{key}=", value.call)
  end
end
overrides() click to toggle source
# File lib/mockumentary/model.rb, line 53
def self.overrides
  {}
end
relationships() click to toggle source
# File lib/mockumentary/model.rb, line 39
def self.relationships
  @relationships ||= {}
end
save_defaults() click to toggle source
# File lib/mockumentary/model.rb, line 21
def self.save_defaults
  @save_defaults ||= {
    :new_record => false,
    :id => :uid
  }
end
save_fields() click to toggle source
# File lib/mockumentary/model.rb, line 122
def self.save_fields
  @save_fields ||= [:id, :created_at, :updated_at]
end
save_opts() click to toggle source
# File lib/mockumentary/model.rb, line 93
def self.save_opts
  opts = save_defaults.dup
  opts.merge!(overrides[:save]) if overrides && overrides[:save]
  evaluate(opts)
end
uid() click to toggle source
# File lib/mockumentary/model.rb, line 47
def self.uid
  @uid ||= 0
  @uid += 1
  @uid
end

Public Instance Methods

save(opts={}) click to toggle source
# File lib/mockumentary/model.rb, line 115
def save(opts={})
  self.class.save_opts.merge(opts).each do |key, value|
    self[key] = value
  end
  self
end