frenetic 0.0.20.alpha.6 → 1.0.0.alpha.1
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.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/Appraisals +9 -0
- data/Gemfile +1 -1
- data/README.md +2 -2
- data/frenetic.gemspec +8 -5
- data/gemfiles/faraday_08.gemfile +10 -0
- data/gemfiles/faraday_08.gemfile.lock +77 -0
- data/gemfiles/faraday_09.gemfile +10 -0
- data/gemfiles/faraday_09.gemfile.lock +77 -0
- data/lib/frenetic.rb +57 -30
- data/lib/frenetic/briefly_memoizable.rb +34 -0
- data/lib/frenetic/concerns/collection_rest_methods.rb +1 -1
- data/lib/frenetic/concerns/hal_linked.rb +5 -35
- data/lib/frenetic/concerns/member_rest_methods.rb +0 -2
- data/lib/frenetic/concerns/structured.rb +0 -5
- data/lib/frenetic/connection.rb +110 -0
- data/lib/frenetic/errors.rb +112 -0
- data/lib/frenetic/hypermedia_link.rb +74 -0
- data/lib/frenetic/hypermedia_link_set.rb +43 -0
- data/lib/frenetic/middleware/hal_json.rb +9 -12
- data/lib/frenetic/resource.rb +22 -6
- data/lib/frenetic/resource_collection.rb +0 -1
- data/lib/frenetic/resource_mockery.rb +55 -1
- data/lib/frenetic/version.rb +1 -1
- data/spec/{concerns/breifly_memoizable_spec.rb → briefly_memoizable_spec.rb} +10 -18
- data/spec/concerns/hal_linked_spec.rb +49 -62
- data/spec/concerns/member_rest_methods_spec.rb +8 -10
- data/spec/concerns/structured_spec.rb +70 -75
- data/spec/connection_spec.rb +137 -0
- data/spec/fixtures/test_api_requests.rb +8 -2
- data/spec/frenetic_spec.rb +221 -133
- data/spec/hypermedia_link_set_spec.rb +155 -0
- data/spec/hypermedia_link_spec.rb +153 -0
- data/spec/middleware/hal_json_spec.rb +13 -15
- data/spec/resource_collection_spec.rb +17 -16
- data/spec/resource_mockery_spec.rb +69 -0
- data/spec/resource_spec.rb +110 -63
- data/spec/support/rspec.rb +0 -1
- metadata +88 -75
- data/lib/frenetic/concerns/briefly_memoizable.rb +0 -34
- data/lib/frenetic/concerns/configurable.rb +0 -59
- data/lib/frenetic/concerns/resource_mockery.rb +0 -48
- data/lib/frenetic/configuration.rb +0 -88
- data/spec/concerns/configurable_spec.rb +0 -50
- data/spec/concerns/resource_mockery_spec.rb +0 -56
- data/spec/configuration_spec.rb +0 -134
data/spec/resource_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Frenetic::Resource do
|
4
4
|
let(:test_cfg) { { url:'http://example.com/api' } }
|
5
5
|
|
6
|
-
let(:
|
6
|
+
let(:abstract_resource) do
|
7
7
|
cfg = test_cfg
|
8
8
|
|
9
9
|
Class.new(described_class) do
|
@@ -12,7 +12,7 @@ describe Frenetic::Resource do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
before do
|
15
|
-
stub_const 'MyNamespace::MyTempResource',
|
15
|
+
stub_const 'MyNamespace::MyTempResource', abstract_resource
|
16
16
|
end
|
17
17
|
|
18
18
|
describe '.api_client' do
|
@@ -34,26 +34,22 @@ describe Frenetic::Resource do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
context 'a block argument' do
|
37
|
-
before
|
38
|
-
configure_with_block!
|
39
|
-
end
|
37
|
+
before { configure_with_block! }
|
40
38
|
|
41
39
|
subject { MyNamespace::MyTempResource.instance_variable_get '@api_client' }
|
42
40
|
|
43
|
-
it '
|
44
|
-
subject.
|
41
|
+
it 'saves a reference to the argument' do
|
42
|
+
expect(subject).to be_a Proc
|
45
43
|
end
|
46
44
|
end
|
47
45
|
|
48
46
|
context 'a Frenetic instance' do
|
49
|
-
before
|
50
|
-
configure_with_instance!
|
51
|
-
end
|
47
|
+
before { configure_with_instance! }
|
52
48
|
|
53
49
|
subject { MyNamespace::MyTempResource.instance_variable_get '@api_client' }
|
54
50
|
|
55
|
-
it '
|
56
|
-
subject.
|
51
|
+
it 'saves a reference to the argument' do
|
52
|
+
expect(subject).to be_an_instance_of Frenetic
|
57
53
|
end
|
58
54
|
end
|
59
55
|
|
@@ -62,25 +58,24 @@ describe Frenetic::Resource do
|
|
62
58
|
|
63
59
|
context 'and a previously stored @api_client' do
|
64
60
|
context 'Proc' do
|
65
|
-
before
|
66
|
-
configure_with_block!
|
67
|
-
end
|
61
|
+
before { configure_with_block! }
|
68
62
|
|
69
|
-
|
63
|
+
let(:api_client) do
|
70
64
|
MyNamespace::MyTempResource.instance_variable_get('@api_client')
|
71
|
-
|
65
|
+
end
|
72
66
|
|
67
|
+
it 'calls the Proc' do
|
68
|
+
allow(api_client).to receive(:call)
|
73
69
|
subject
|
70
|
+
expect(api_client).to have_received(:call)
|
74
71
|
end
|
75
72
|
end
|
76
73
|
|
77
74
|
context 'Frenetic instance' do
|
78
|
-
before
|
79
|
-
configure_with_instance!
|
80
|
-
end
|
75
|
+
before { configure_with_instance! }
|
81
76
|
|
82
|
-
it '
|
83
|
-
subject.
|
77
|
+
it 'returns the instance' do
|
78
|
+
expect(subject).to be_an_instance_of Frenetic
|
84
79
|
end
|
85
80
|
end
|
86
81
|
end
|
@@ -90,11 +85,15 @@ describe Frenetic::Resource do
|
|
90
85
|
|
91
86
|
describe '.namespace' do
|
92
87
|
before do
|
93
|
-
stub_const 'MyNamespace::MyTempResource',
|
88
|
+
stub_const 'MyNamespace::MyTempResource', abstract_resource
|
94
89
|
end
|
95
90
|
|
96
91
|
subject { MyNamespace::MyTempResource.namespace }
|
97
92
|
|
93
|
+
let(:namespace) do
|
94
|
+
MyNamespace::MyTempResource.instance_variable_get('@namespace')
|
95
|
+
end
|
96
|
+
|
98
97
|
context 'with an argument' do
|
99
98
|
before do
|
100
99
|
MyNamespace::MyTempResource.class_eval do
|
@@ -102,30 +101,24 @@ describe Frenetic::Resource do
|
|
102
101
|
end
|
103
102
|
end
|
104
103
|
|
105
|
-
it '
|
106
|
-
subject.
|
104
|
+
it 'returns that value' do
|
105
|
+
expect(subject).to eq 'test_spec'
|
107
106
|
end
|
108
107
|
|
109
|
-
it '
|
108
|
+
it 'internally saves the value' do
|
110
109
|
subject
|
111
|
-
|
112
|
-
ns = MyNamespace::MyTempResource.instance_variable_get '@namespace'
|
113
|
-
|
114
|
-
ns.should == 'test_spec'
|
110
|
+
expect(namespace).to eq 'test_spec'
|
115
111
|
end
|
116
112
|
end
|
117
113
|
|
118
114
|
context 'with no argument' do
|
119
|
-
it '
|
120
|
-
subject.
|
115
|
+
it 'infers the value' do
|
116
|
+
expect(subject).to eq 'my_temp_resource'
|
121
117
|
end
|
122
118
|
|
123
|
-
it '
|
119
|
+
it 'caches the inferrence' do
|
124
120
|
subject
|
125
|
-
|
126
|
-
ns = MyNamespace::MyTempResource.instance_variable_get '@namespace'
|
127
|
-
|
128
|
-
ns.should == 'my_temp_resource'
|
121
|
+
expect(namespace).to eq 'my_temp_resource'
|
129
122
|
end
|
130
123
|
end
|
131
124
|
end
|
@@ -136,18 +129,43 @@ describe Frenetic::Resource do
|
|
136
129
|
subject { MyNamespace::MyTempResource.properties }
|
137
130
|
|
138
131
|
context 'for a known resource' do
|
139
|
-
it '
|
140
|
-
subject.
|
132
|
+
it 'returns a list of properties defined by the API' do
|
133
|
+
expect(subject).to_not be_empty
|
141
134
|
end
|
142
135
|
end
|
143
136
|
|
144
137
|
context 'for an unknown resource' do
|
145
138
|
before do
|
146
|
-
MyNamespace::MyTempResource
|
139
|
+
allow(MyNamespace::MyTempResource)
|
140
|
+
.to receive(:namespace)
|
141
|
+
.and_return(Time.now.to_i.to_s)
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'raises an error' do
|
145
|
+
expect{subject}.to raise_error Frenetic::HypermediaError
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context 'in test mode' do
|
150
|
+
let(:mock_abstract_resource) do
|
151
|
+
Class.new(MyNamespace::MyTempResource) do
|
152
|
+
include Frenetic::ResourceMockery
|
153
|
+
|
154
|
+
def self.default_attributes
|
155
|
+
{ foo:123 }
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
before do
|
161
|
+
stub_const 'MyNamespace::MockMyTempResource', mock_abstract_resource
|
162
|
+
allow(MyNamespace::MyTempResource)
|
163
|
+
.to receive(:test_mode?)
|
164
|
+
.and_return(true)
|
147
165
|
end
|
148
166
|
|
149
|
-
it '
|
150
|
-
expect
|
167
|
+
it 'returns the default attributes of the mock' do
|
168
|
+
expect(subject).to eq(foo:123)
|
151
169
|
end
|
152
170
|
end
|
153
171
|
end
|
@@ -157,11 +175,10 @@ describe Frenetic::Resource do
|
|
157
175
|
|
158
176
|
before do
|
159
177
|
stub_const 'MyNamespace::MyMockResource', Class.new(MyNamespace::MyTempResource)
|
160
|
-
|
161
178
|
MyNamespace::MyMockResource.send :include, Frenetic::ResourceMockery
|
162
179
|
end
|
163
180
|
|
164
|
-
it '
|
181
|
+
it 'initializes the mock with the provided values' do
|
165
182
|
expect(subject.id).to eq 99
|
166
183
|
end
|
167
184
|
end
|
@@ -170,19 +187,18 @@ describe Frenetic::Resource do
|
|
170
187
|
subject { MyNamespace::MyTempResource.mock_class }
|
171
188
|
|
172
189
|
context 'without a defined Mock-class' do
|
173
|
-
it '
|
174
|
-
expect{subject}.to raise_error Frenetic::
|
190
|
+
it 'raises an error' do
|
191
|
+
expect{subject}.to raise_error Frenetic::UndefinedResourceMock
|
175
192
|
end
|
176
193
|
end
|
177
194
|
|
178
195
|
context 'with a defined Mock-class' do
|
179
196
|
before do
|
180
197
|
stub_const 'MyNamespace::MyMockResource', Class.new(MyNamespace::MyTempResource)
|
181
|
-
|
182
198
|
MyNamespace::MyMockResource.send :include, Frenetic::ResourceMockery
|
183
199
|
end
|
184
200
|
|
185
|
-
it '
|
201
|
+
it 'returns a mock instance of the resource' do
|
186
202
|
expect(subject).to eq MyNamespace::MyMockResource
|
187
203
|
end
|
188
204
|
end
|
@@ -196,30 +212,58 @@ describe Frenetic::Resource do
|
|
196
212
|
context 'with no arguments' do
|
197
213
|
let(:args) {}
|
198
214
|
|
199
|
-
it '
|
200
|
-
subject.name.
|
215
|
+
it 'has default attributes' do
|
216
|
+
expect(subject.name).to be_nil
|
201
217
|
end
|
202
218
|
end
|
203
219
|
|
204
220
|
context 'with known attributes' do
|
205
221
|
let(:args) { { name:'foo' } }
|
206
222
|
|
207
|
-
it '
|
208
|
-
subject.name.
|
223
|
+
it 'sets the appropriate values' do
|
224
|
+
expect(subject.name).to eq 'foo'
|
225
|
+
end
|
226
|
+
|
227
|
+
context 'and an embedded resource' do
|
228
|
+
let(:args) do
|
229
|
+
super().merge({
|
230
|
+
'_embedded' => {
|
231
|
+
'abstract_resource' => {
|
232
|
+
'id' => 99,
|
233
|
+
'genus' => 'canine'
|
234
|
+
}
|
235
|
+
}
|
236
|
+
})
|
237
|
+
end
|
238
|
+
|
239
|
+
context 'this is of a known type' do
|
240
|
+
before do
|
241
|
+
stub_const 'MyNamespace::AbstractResource', abstract_resource
|
242
|
+
end
|
243
|
+
|
244
|
+
it 'instantiates the embedded resource' do
|
245
|
+
expect(subject.abstract_resource).to be_an_instance_of MyNamespace::AbstractResource
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
context 'this is of a known type' do
|
250
|
+
it 'instantiates a shim of the embedded resource' do
|
251
|
+
expect(subject.abstract_resource).to be_an_instance_of OpenStruct
|
252
|
+
end
|
253
|
+
end
|
209
254
|
end
|
210
255
|
end
|
211
256
|
|
212
257
|
context 'with unknown attributes' do
|
213
258
|
let(:args) { { gender:'male' } }
|
214
259
|
|
215
|
-
it '
|
260
|
+
it 'does not create accessors' do
|
216
261
|
expect{ subject.gender }.to raise_error NoMethodError
|
217
262
|
end
|
218
263
|
|
219
|
-
it '
|
220
|
-
params = subject.instance_variable_get(
|
221
|
-
|
222
|
-
params.should include 'gender' => 'male'
|
264
|
+
it 'is accessible in @params' do
|
265
|
+
params = subject.instance_variable_get('@params')
|
266
|
+
expect(params).to include 'gender' => 'male'
|
223
267
|
end
|
224
268
|
end
|
225
269
|
|
@@ -227,11 +271,13 @@ describe Frenetic::Resource do
|
|
227
271
|
let(:args) {}
|
228
272
|
|
229
273
|
before do
|
230
|
-
MyNamespace::MyTempResource
|
274
|
+
allow(MyNamespace::MyTempResource)
|
275
|
+
.to receive(:namespace)
|
276
|
+
.and_return(Time.now.to_i.to_s)
|
231
277
|
end
|
232
278
|
|
233
|
-
it '
|
234
|
-
expect{
|
279
|
+
it 'raises an error' do
|
280
|
+
expect{subject}.to raise_error Frenetic::HypermediaError
|
235
281
|
end
|
236
282
|
end
|
237
283
|
end
|
@@ -239,9 +285,10 @@ describe Frenetic::Resource do
|
|
239
285
|
describe '#attributes' do
|
240
286
|
before { @stubs.api_description }
|
241
287
|
|
242
|
-
subject { MyNamespace::MyTempResource.new(name:'me').attributes }
|
288
|
+
subject { MyNamespace::MyTempResource.new(id:54, name:'me').attributes }
|
243
289
|
|
244
|
-
it
|
290
|
+
it 'returns attributes of the resource' do
|
291
|
+
expect(subject).to eq({'id' => 54, 'name' => 'me'})
|
292
|
+
end
|
245
293
|
end
|
246
|
-
|
247
294
|
end
|
data/spec/support/rspec.rb
CHANGED
metadata
CHANGED
@@ -1,160 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frenetic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease: 7
|
4
|
+
version: 1.0.0.alpha.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Derek Lindahl
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-09-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: faraday
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.8
|
19
|
+
version: '0.8'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.8
|
26
|
+
version: '0.8'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: faraday_middleware
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.
|
33
|
+
version: '0.8'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.
|
40
|
+
version: '0.8'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: activesupport
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '3'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '3'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: addressable
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 2.3.4
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 2.3.4
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: awesome_print
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rspec
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- - ~>
|
87
|
+
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
89
|
+
version: 3.0.0
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- - ~>
|
94
|
+
- - "~>"
|
108
95
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
96
|
+
version: 3.0.0
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: rack-cache
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- - ~>
|
101
|
+
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '1.2'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- - ~>
|
108
|
+
- - "~>"
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '1.2'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: faraday-http-cache
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.4.2
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.4.2
|
126
125
|
- !ruby/object:Gem::Dependency
|
127
126
|
name: webmock
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
128
|
requirements:
|
131
|
-
- - ~>
|
129
|
+
- - "~>"
|
132
130
|
- !ruby/object:Gem::Version
|
133
|
-
version: 1.
|
131
|
+
version: 1.18.0
|
134
132
|
type: :development
|
135
133
|
prerelease: false
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
135
|
requirements:
|
139
|
-
- - ~>
|
136
|
+
- - "~>"
|
140
137
|
- !ruby/object:Gem::Version
|
141
|
-
version: 1.
|
138
|
+
version: 1.18.0
|
142
139
|
- !ruby/object:Gem::Dependency
|
143
140
|
name: timecop
|
144
141
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
142
|
requirements:
|
147
|
-
- - ~>
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.7.1
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.7.1
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: appraisal
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
148
158
|
- !ruby/object:Gem::Version
|
149
|
-
version: 0.
|
159
|
+
version: 1.0.2
|
150
160
|
type: :development
|
151
161
|
prerelease: false
|
152
162
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
163
|
requirements:
|
155
|
-
- - ~>
|
164
|
+
- - "~>"
|
156
165
|
- !ruby/object:Gem::Version
|
157
|
-
version: 0.
|
166
|
+
version: 1.0.2
|
158
167
|
description: An opinionated Ruby-based Hypermedia API client.
|
159
168
|
email:
|
160
169
|
- dlindahl@customink.com
|
@@ -162,40 +171,47 @@ executables: []
|
|
162
171
|
extensions: []
|
163
172
|
extra_rdoc_files: []
|
164
173
|
files:
|
165
|
-
- .gitignore
|
166
|
-
- .irbrc
|
167
|
-
- .ruby-version
|
168
|
-
- .travis.yml
|
174
|
+
- ".gitignore"
|
175
|
+
- ".irbrc"
|
176
|
+
- ".ruby-version"
|
177
|
+
- ".travis.yml"
|
178
|
+
- Appraisals
|
169
179
|
- Gemfile
|
170
180
|
- LICENSE
|
171
181
|
- README.md
|
172
182
|
- Rakefile
|
173
183
|
- frenetic.gemspec
|
184
|
+
- gemfiles/faraday_08.gemfile
|
185
|
+
- gemfiles/faraday_08.gemfile.lock
|
186
|
+
- gemfiles/faraday_09.gemfile
|
187
|
+
- gemfiles/faraday_09.gemfile.lock
|
174
188
|
- lib/frenetic.rb
|
175
|
-
- lib/frenetic/
|
189
|
+
- lib/frenetic/briefly_memoizable.rb
|
176
190
|
- lib/frenetic/concerns/collection_rest_methods.rb
|
177
|
-
- lib/frenetic/concerns/configurable.rb
|
178
191
|
- lib/frenetic/concerns/hal_linked.rb
|
179
192
|
- lib/frenetic/concerns/member_rest_methods.rb
|
180
|
-
- lib/frenetic/concerns/resource_mockery.rb
|
181
193
|
- lib/frenetic/concerns/structured.rb
|
182
|
-
- lib/frenetic/
|
194
|
+
- lib/frenetic/connection.rb
|
195
|
+
- lib/frenetic/errors.rb
|
196
|
+
- lib/frenetic/hypermedia_link.rb
|
197
|
+
- lib/frenetic/hypermedia_link_set.rb
|
183
198
|
- lib/frenetic/middleware/hal_json.rb
|
184
199
|
- lib/frenetic/resource.rb
|
185
200
|
- lib/frenetic/resource_collection.rb
|
186
201
|
- lib/frenetic/resource_mockery.rb
|
187
202
|
- lib/frenetic/version.rb
|
188
|
-
- spec/
|
189
|
-
- spec/concerns/configurable_spec.rb
|
203
|
+
- spec/briefly_memoizable_spec.rb
|
190
204
|
- spec/concerns/hal_linked_spec.rb
|
191
205
|
- spec/concerns/member_rest_methods_spec.rb
|
192
|
-
- spec/concerns/resource_mockery_spec.rb
|
193
206
|
- spec/concerns/structured_spec.rb
|
194
|
-
- spec/
|
207
|
+
- spec/connection_spec.rb
|
195
208
|
- spec/fixtures/test_api_requests.rb
|
196
209
|
- spec/frenetic_spec.rb
|
210
|
+
- spec/hypermedia_link_set_spec.rb
|
211
|
+
- spec/hypermedia_link_spec.rb
|
197
212
|
- spec/middleware/hal_json_spec.rb
|
198
213
|
- spec/resource_collection_spec.rb
|
214
|
+
- spec/resource_mockery_spec.rb
|
199
215
|
- spec/resource_spec.rb
|
200
216
|
- spec/spec_helper.rb
|
201
217
|
- spec/support/rspec.rb
|
@@ -203,44 +219,41 @@ files:
|
|
203
219
|
- spec/support/webmock.rb
|
204
220
|
homepage: http://dlindahl.github.com/frenetic/
|
205
221
|
licenses: []
|
222
|
+
metadata: {}
|
206
223
|
post_install_message:
|
207
224
|
rdoc_options: []
|
208
225
|
require_paths:
|
209
226
|
- lib
|
210
227
|
required_ruby_version: !ruby/object:Gem::Requirement
|
211
|
-
none: false
|
212
228
|
requirements:
|
213
|
-
- -
|
229
|
+
- - ">="
|
214
230
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
216
|
-
segments:
|
217
|
-
- 0
|
218
|
-
hash: -828936829114139905
|
231
|
+
version: 1.9.3
|
219
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
|
-
none: false
|
221
233
|
requirements:
|
222
|
-
- -
|
234
|
+
- - ">"
|
223
235
|
- !ruby/object:Gem::Version
|
224
236
|
version: 1.3.1
|
225
237
|
requirements: []
|
226
238
|
rubyforge_project:
|
227
|
-
rubygems_version:
|
239
|
+
rubygems_version: 2.2.2
|
228
240
|
signing_key:
|
229
|
-
specification_version:
|
241
|
+
specification_version: 4
|
230
242
|
summary: Here lies a Ruby-based Hypermedia API client that expects HAL+JSON and makes
|
231
243
|
a lot of assumptions about your API.
|
232
244
|
test_files:
|
233
|
-
- spec/
|
234
|
-
- spec/concerns/configurable_spec.rb
|
245
|
+
- spec/briefly_memoizable_spec.rb
|
235
246
|
- spec/concerns/hal_linked_spec.rb
|
236
247
|
- spec/concerns/member_rest_methods_spec.rb
|
237
|
-
- spec/concerns/resource_mockery_spec.rb
|
238
248
|
- spec/concerns/structured_spec.rb
|
239
|
-
- spec/
|
249
|
+
- spec/connection_spec.rb
|
240
250
|
- spec/fixtures/test_api_requests.rb
|
241
251
|
- spec/frenetic_spec.rb
|
252
|
+
- spec/hypermedia_link_set_spec.rb
|
253
|
+
- spec/hypermedia_link_spec.rb
|
242
254
|
- spec/middleware/hal_json_spec.rb
|
243
255
|
- spec/resource_collection_spec.rb
|
256
|
+
- spec/resource_mockery_spec.rb
|
244
257
|
- spec/resource_spec.rb
|
245
258
|
- spec/spec_helper.rb
|
246
259
|
- spec/support/rspec.rb
|