Class: Softlayer::Fixtures
- Inherits:
-
Object
- Object
- Softlayer::Fixtures
- Defined in:
- lib/softlayer/fixtures.rb
Class Method Summary collapse
- .find_object(type, id) ⇒ Object
- .fixtures_dir ⇒ Object
- .load ⇒ Object
- .save_on_database(key, model) ⇒ Object
- .set_attributes(key, object, model) ⇒ Object
- .set_relationships ⇒ Object
Class Method Details
.find_object(type, id) ⇒ Object
21 22 23 |
# File 'lib/softlayer/fixtures.rb', line 21 def self.find_object(type, id) $database[type][id] end |
.fixtures_dir ⇒ Object
25 26 27 |
# File 'lib/softlayer/fixtures.rb', line 25 def self.fixtures_dir File.join(Dir.pwd, 'test/softlayer/fixtures/') end |
.load ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/softlayer/fixtures.rb', line 2 def self.load $database = {} $database[:relationships] = [] fixtures = Dir["#{fixtures_dir}/**/*.yml"].map do |f| fixtures = YAML.load(ERB.new(File.read(f)).result) fixtures.each do |key,objects| objects.each do |k, object| # instantiate model model = key.to_s.constantize.new ## set attributes model = set_attributes(k, object, model) ## add to $database save_on_database(k,model) end end end set_relationships end |
.save_on_database(key, model) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/softlayer/fixtures.rb', line 29 def self.save_on_database(key, model) class_name = model.class.name if $database.has_key?(class_name) $database[class_name][key] = model else $database[class_name] = {} $database[class_name][key] = model end end |
.set_attributes(key, object, model) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/softlayer/fixtures.rb', line 39 def self.set_attributes(key, object, model) if object.has_key?('attributes') object['attributes'].each_pair do |attr, value| model.send("#{attr}=", value) end end if object.has_key?('relationships') relationships = [] object['relationships'].each do |relation, data| $database[:relationships].push({:id => key, :type => model.class.name, :relationship => relation, :data => data}) end end model end |
.set_relationships ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/softlayer/fixtures.rb', line 55 def self.set_relationships $database[:relationships].each do |row| relationships = [] relation = row[:relationship] data = row[:data] model = find_object(row[:type],row[:id]) if data.class == Array data.each do |d| relationships.push(find_object(d['type'], d['id'])) end model.send("#{relation}=", relationships) else relationships.push(find_object(data['type'], data['id'])) model.send("#{relation}=", relationships.first) end end end |