frenetic 0.0.8 → 0.0.9
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/frenetic.gemspec +2 -2
- data/lib/frenetic/resource.rb +11 -1
- data/lib/frenetic/version.rb +1 -1
- data/spec/lib/frenetic/resource_spec.rb +23 -7
- metadata +6 -6
data/frenetic.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_dependency 'addressable', '~> 2.2'
|
23
23
|
gem.add_dependency 'patron', '~> 0.4.18'
|
24
24
|
|
25
|
-
gem.add_development_dependency 'rspec', '~> 2.
|
26
|
-
gem.add_development_dependency 'webmock', '~> 1.
|
25
|
+
gem.add_development_dependency 'rspec', '~> 2.13.0'
|
26
|
+
gem.add_development_dependency 'webmock', '~> 1.11.0'
|
27
27
|
gem.add_development_dependency 'vcr', '~> 2.4.0'
|
28
28
|
end
|
data/lib/frenetic/resource.rb
CHANGED
@@ -63,10 +63,20 @@ class Frenetic
|
|
63
63
|
def build_associations( attributes )
|
64
64
|
return unless attributes['_embedded']
|
65
65
|
|
66
|
-
|
66
|
+
namespace = self.class.to_s.deconstantize
|
67
|
+
|
68
|
+
attributes['_embedded'].each do |key, value|
|
67
69
|
self.class.class_eval do
|
68
70
|
attr_reader key.to_sym
|
69
71
|
end
|
72
|
+
|
73
|
+
assoc_class = "#{namespace}::#{key.classify}"
|
74
|
+
|
75
|
+
if assoc_class = (assoc_class.constantize rescue nil)
|
76
|
+
value = assoc_class.new value
|
77
|
+
end
|
78
|
+
|
79
|
+
instance_variable_set "@#{key}", value
|
70
80
|
end
|
71
81
|
end
|
72
82
|
|
data/lib/frenetic/version.rb
CHANGED
@@ -9,8 +9,8 @@ describe Frenetic::Resource do
|
|
9
9
|
let(:description_stub) do
|
10
10
|
Frenetic::HalJson::ResponseWrapper.new('resources' => {
|
11
11
|
'schema' => {
|
12
|
-
'my_resource'
|
13
|
-
'my_other_resource' => { 'properties' => {} }
|
12
|
+
'my_resource' => { 'properties' => { 'foo' => 'string' } },
|
13
|
+
'my_other_resource' => { 'properties' => { 'bar' => 'integer' } }
|
14
14
|
} } )
|
15
15
|
end
|
16
16
|
|
@@ -87,15 +87,31 @@ describe Frenetic::Resource do
|
|
87
87
|
'_self' => { '_href' => 'bar' }
|
88
88
|
},
|
89
89
|
'foo' => 1,
|
90
|
-
'_embedded' =>
|
91
|
-
'baz' => 'resource'
|
92
|
-
}
|
90
|
+
'_embedded' => embed
|
93
91
|
}
|
94
92
|
end
|
95
93
|
|
96
94
|
subject { resource_a }
|
97
95
|
|
98
|
-
|
96
|
+
context 'that have a Resource representation' do
|
97
|
+
subject { super().my_other_resource }
|
98
|
+
|
99
|
+
let(:embed) do
|
100
|
+
{ 'my_other_resource' => { 'bar' => 123 } }
|
101
|
+
end
|
102
|
+
|
103
|
+
its(:bar) { should == 123 }
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'that do not have a Resource representation' do
|
107
|
+
subject { super().foo }
|
108
|
+
|
109
|
+
let(:embed) do
|
110
|
+
{ 'foo' => { 'bar' => 'baz' } }
|
111
|
+
end
|
112
|
+
|
113
|
+
it { should include 'bar' => 'baz' }
|
114
|
+
end
|
99
115
|
end
|
100
116
|
end
|
101
117
|
|
@@ -149,5 +165,5 @@ describe Frenetic::Resource do
|
|
149
165
|
expect { subject }.to raise_error(Frenetic::MissingAPIReference)
|
150
166
|
end
|
151
167
|
end
|
152
|
-
end
|
168
|
+
end
|
153
169
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frenetic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
117
|
+
version: 2.13.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 2.
|
125
|
+
version: 2.13.0
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: webmock
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - ~>
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: 1.
|
133
|
+
version: 1.11.0
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
requirements:
|
139
139
|
- - ~>
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: 1.
|
141
|
+
version: 1.11.0
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: vcr
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|