Class: Softlayer::Mock

Inherits:
Object
  • Object
show all
Defined in:
lib/softlayer/mock.rb,
lib/softlayer/mock/brand.rb,
lib/softlayer/mock/ticket.rb,
lib/softlayer/mock/account.rb,
lib/softlayer/mock/dns/domain.rb,
lib/softlayer/mock/virtual/guest.rb,
lib/softlayer/mock/dns/domain/resource_record/soa_type.rb

Defined Under Namespace

Classes: Account, Brand, Dns, NotImplemented, Ticket, Virtual

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#idObject

Returns the value of attribute id.



10
11
12
# File 'lib/softlayer/mock.rb', line 10

def id
  @id
end

Class Method Details

.add_attributes(attrs) ⇒ Object



12
13
14
15
16
17
18
19
# 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

.allObject



21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



32
33
34
35
36
# 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) ⇒ Object



38
39
40
41
42
43
# 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) ⇒ Object



45
46
47
# 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_objectObject



49
50
51
52
53
54
55
56
# 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) ⇒ Object



58
59
60
61
62
63
64
65
66
# 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 = {}) ⇒ Object

Raises:



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 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) ⇒ Object



89
90
91
92
93
94
95
96
# 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