class Softlayer::Mock

Attributes

id[RW]

Public Class Methods

add_attributes(attrs) click to toggle source
# File lib/softlayer/mock.rb, line 12
def self.add_attributes(attrs)
  class_name = get_class_from_return_object
  obj = class_name.constantize.new
  attrs.each do |attr,value|
    obj.send("#{attr}=", value) if obj.respond_to?("#{attr}=")
  end
  obj
end
all() click to toggle source
# File lib/softlayer/mock.rb, line 21
def self.all
  collection = []
  results = $database[get_class_from_return_object]

  return collection if results.nil?
  results.each do |key,result|
    collection.push(result)
  end
  collection
end
create_object(attrs) click to toggle source
# File lib/softlayer/mock.rb, line 32
def self.create_object(attrs)
  obj = add_attributes(attrs)
  id = (0...50).map { ('a'..'z').to_a[rand(26)] }.join
  save_on_database(id, obj)
end
find(id) click to toggle source
# File lib/softlayer/mock.rb, line 38
def self.find(id)
  $database[get_class_from_return_object].each do |key,obj|
    return obj if obj.id == id
  end
  nil
end
find_by_key(key) click to toggle source
# File lib/softlayer/mock.rb, line 45
def self.find_by_key(key)
  $database[get_class_from_return_object][key]
end
get_class_from_return_object() click to toggle source
# File lib/softlayer/mock.rb, line 49
def self.get_class_from_return_object
  if !@return_object.nil?
    @return_object.first.name if @return_object.name == Array
    @return_object.name
  else
    self.name.gsub("::Mock","")
  end
end
message_to_params(message) click to toggle source
# File lib/softlayer/mock.rb, line 58
def self.message_to_params(message)
  parameters = []
  if !message.nil?
    message.each do |attr,value|
      parameters.push(value)
    end
  end
  parameters
end
request(service_name, method, return_object, message, init_headers = {}) click to toggle source
# File lib/softlayer/mock.rb, line 68
def self.request(service_name, method, return_object, message, init_headers = {})
  klass_name = service_name.gsub("SoftLayer","Softlayer")
  klass_name = klass_name.gsub("Softlayer_", "Softlayer_Mock_").gsub("_","::")
  klass_name = klass_name.constantize

  if init_headers.keys.map { |x| x.match /#{service_name}InitParameters/ }.empty?
    @service = klass_name
  else
    @service = klass_name.new
    key_name = init_headers.keys.find { |x| x.match /#{service_name}InitParameters/ }
    @service.id = init_headers[key_name]["id"]
  end
  @return_object = return_object
  @message = message

  raise NotImplemented, "Error: Method #{method} not implemented" unless @service.methods.include?(method)
  parameters = message_to_params(message)
  return @service.send(method, *parameters) if parameters.length > 0
  @service.send(method)
end
save_on_database(key, obj) click to toggle source
# File lib/softlayer/mock.rb, line 89
def self.save_on_database(key, obj)
  if $database[obj.class.name].nil?
    $database[obj.class.name] = {}
    $database[obj.class.name][key] = obj
  else
    $database[obj.class.name][key] = obj
  end
end