yesterday 0.5 → 0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/yesterday/differ.rb
CHANGED
@@ -29,6 +29,9 @@ module Yesterday
|
|
29
29
|
if attribute == 'id'
|
30
30
|
diff[attribute] = old_value
|
31
31
|
|
32
|
+
elsif old_value.is_a?(Hash)
|
33
|
+
diff[attribute] = diff_attributes(old_value, to[attribute] || {})
|
34
|
+
|
32
35
|
elsif !old_value.is_a?(Array) && !ignored_attributes.include?(attribute)
|
33
36
|
new_value = to[attribute]
|
34
37
|
diff[attribute] = [old_value, new_value]
|
data/lib/yesterday/version.rb
CHANGED
@@ -11,12 +11,15 @@ module Yesterday
|
|
11
11
|
attributes = {}
|
12
12
|
|
13
13
|
hash.each do |attribute, value|
|
14
|
-
if
|
14
|
+
if nested_objects? value
|
15
15
|
value.each do |item|
|
16
16
|
attributes[attribute] ||= []
|
17
|
-
attributes[attribute] << deserialize(item)
|
17
|
+
attributes[attribute] << deserialize(item) if item
|
18
18
|
end
|
19
19
|
|
20
|
+
elsif nested_object? value
|
21
|
+
attributes[attribute] = deserialize(value)
|
22
|
+
|
20
23
|
elsif attribute != 'id'
|
21
24
|
attributes[attribute] = value.is_a?(Array) ? Yesterday::VersionedAttribute.new(value) : value
|
22
25
|
end
|
@@ -25,9 +28,13 @@ module Yesterday
|
|
25
28
|
Yesterday::VersionedObject.new(attributes.merge({ 'id' => hash['id']}))
|
26
29
|
end
|
27
30
|
|
28
|
-
def
|
31
|
+
def nested_objects?(value)
|
29
32
|
value.is_a?(Array) && value.first.is_a?(Hash)
|
30
33
|
end
|
31
34
|
|
35
|
+
def nested_object?(value)
|
36
|
+
value.is_a?(Hash)
|
37
|
+
end
|
38
|
+
|
32
39
|
end
|
33
40
|
end
|
data/spec/differ_spec.rb
CHANGED
@@ -16,7 +16,12 @@ describe Yesterday::Differ do
|
|
16
16
|
'address' => 'Sesamstreet 2' }
|
17
17
|
]
|
18
18
|
}
|
19
|
-
]
|
19
|
+
],
|
20
|
+
'state' => {
|
21
|
+
'id' => 1,
|
22
|
+
'code' => 'C00',
|
23
|
+
'description' => 'Critical'
|
24
|
+
}
|
20
25
|
}
|
21
26
|
|
22
27
|
to = {
|
@@ -33,7 +38,12 @@ describe Yesterday::Differ do
|
|
33
38
|
'address' => 'Foobar 2' }
|
34
39
|
]
|
35
40
|
}
|
36
|
-
]
|
41
|
+
],
|
42
|
+
'state' => {
|
43
|
+
'id' => 1,
|
44
|
+
'code' => 'C12',
|
45
|
+
'description' => 'Non critical'
|
46
|
+
}
|
37
47
|
}
|
38
48
|
|
39
49
|
Yesterday::Differ.new(from, to).diff.should == {
|
@@ -54,6 +64,12 @@ describe Yesterday::Differ do
|
|
54
64
|
'_event' => 'modified'
|
55
65
|
}
|
56
66
|
],
|
67
|
+
'state' => {
|
68
|
+
'id' => 1,
|
69
|
+
'code' => ['C00', 'C12'],
|
70
|
+
'description' => ['Critical', 'Non critical'],
|
71
|
+
'_event' => 'modified'
|
72
|
+
},
|
57
73
|
'_event' => 'modified'
|
58
74
|
}
|
59
75
|
end
|
@@ -16,7 +16,12 @@ describe Yesterday::VersionedObjectCreator do
|
|
16
16
|
'address' => ['Sesamstreet 2', 'Sesamstreet 2'] }
|
17
17
|
]
|
18
18
|
}
|
19
|
-
]
|
19
|
+
],
|
20
|
+
'state' => {
|
21
|
+
'id' => 1,
|
22
|
+
'code' => ['C00', 'C12'],
|
23
|
+
'description' => ['Critical', 'Non critical']
|
24
|
+
}
|
20
25
|
}
|
21
26
|
|
22
27
|
object = Yesterday::VersionedObjectCreator.new(from).to_object
|
@@ -37,5 +42,11 @@ describe Yesterday::VersionedObjectCreator do
|
|
37
42
|
object.contacts.first.addresses.first.address.current.should == 'Sesamstreet 1'
|
38
43
|
object.contacts.first.addresses.last.address.previous.should == 'Sesamstreet 2'
|
39
44
|
object.contacts.first.addresses.last.address.current.should == 'Sesamstreet 2'
|
45
|
+
|
46
|
+
object.state.id.should == 1
|
47
|
+
object.state.code.current.should == 'C12'
|
48
|
+
object.state.code.previous.should == 'C00'
|
49
|
+
object.state.description.current.should == 'Non critical'
|
50
|
+
object.state.description.previous.should == 'Critical'
|
40
51
|
end
|
41
52
|
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yesterday
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 6
|
9
|
+
version: "0.6"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Diederick Lawson
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-04-
|
17
|
+
date: 2011-04-04 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|