frenetic 0.0.20.alpha.6 → 1.0.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -1
  3. data/Appraisals +9 -0
  4. data/Gemfile +1 -1
  5. data/README.md +2 -2
  6. data/frenetic.gemspec +8 -5
  7. data/gemfiles/faraday_08.gemfile +10 -0
  8. data/gemfiles/faraday_08.gemfile.lock +77 -0
  9. data/gemfiles/faraday_09.gemfile +10 -0
  10. data/gemfiles/faraday_09.gemfile.lock +77 -0
  11. data/lib/frenetic.rb +57 -30
  12. data/lib/frenetic/briefly_memoizable.rb +34 -0
  13. data/lib/frenetic/concerns/collection_rest_methods.rb +1 -1
  14. data/lib/frenetic/concerns/hal_linked.rb +5 -35
  15. data/lib/frenetic/concerns/member_rest_methods.rb +0 -2
  16. data/lib/frenetic/concerns/structured.rb +0 -5
  17. data/lib/frenetic/connection.rb +110 -0
  18. data/lib/frenetic/errors.rb +112 -0
  19. data/lib/frenetic/hypermedia_link.rb +74 -0
  20. data/lib/frenetic/hypermedia_link_set.rb +43 -0
  21. data/lib/frenetic/middleware/hal_json.rb +9 -12
  22. data/lib/frenetic/resource.rb +22 -6
  23. data/lib/frenetic/resource_collection.rb +0 -1
  24. data/lib/frenetic/resource_mockery.rb +55 -1
  25. data/lib/frenetic/version.rb +1 -1
  26. data/spec/{concerns/breifly_memoizable_spec.rb → briefly_memoizable_spec.rb} +10 -18
  27. data/spec/concerns/hal_linked_spec.rb +49 -62
  28. data/spec/concerns/member_rest_methods_spec.rb +8 -10
  29. data/spec/concerns/structured_spec.rb +70 -75
  30. data/spec/connection_spec.rb +137 -0
  31. data/spec/fixtures/test_api_requests.rb +8 -2
  32. data/spec/frenetic_spec.rb +221 -133
  33. data/spec/hypermedia_link_set_spec.rb +155 -0
  34. data/spec/hypermedia_link_spec.rb +153 -0
  35. data/spec/middleware/hal_json_spec.rb +13 -15
  36. data/spec/resource_collection_spec.rb +17 -16
  37. data/spec/resource_mockery_spec.rb +69 -0
  38. data/spec/resource_spec.rb +110 -63
  39. data/spec/support/rspec.rb +0 -1
  40. metadata +88 -75
  41. data/lib/frenetic/concerns/briefly_memoizable.rb +0 -34
  42. data/lib/frenetic/concerns/configurable.rb +0 -59
  43. data/lib/frenetic/concerns/resource_mockery.rb +0 -48
  44. data/lib/frenetic/configuration.rb +0 -88
  45. data/spec/concerns/configurable_spec.rb +0 -50
  46. data/spec/concerns/resource_mockery_spec.rb +0 -56
  47. data/spec/configuration_spec.rb +0 -134
@@ -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(:my_temp_resource) do
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', my_temp_resource
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 do
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 'should save a reference to the argument' do
44
- subject.should be_a Proc
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 do
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 'should save a reference to the argument' do
56
- subject.should be_an_instance_of Frenetic
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 do
66
- configure_with_block!
67
- end
61
+ before { configure_with_block! }
68
62
 
69
- it 'should call the Proc' do
63
+ let(:api_client) do
70
64
  MyNamespace::MyTempResource.instance_variable_get('@api_client')
71
- .should_receive 'call'
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 do
79
- configure_with_instance!
80
- end
75
+ before { configure_with_instance! }
81
76
 
82
- it 'should return the instance' do
83
- subject.should be_an_instance_of Frenetic
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', my_temp_resource
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 'should return that value' do
106
- subject.should == 'test_spec'
104
+ it 'returns that value' do
105
+ expect(subject).to eq 'test_spec'
107
106
  end
108
107
 
109
- it 'should internally save the value' do
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 'should infer the value' do
120
- subject.should == 'my_temp_resource'
115
+ it 'infers the value' do
116
+ expect(subject).to eq 'my_temp_resource'
121
117
  end
122
118
 
123
- it 'should cache the inferrence' do
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 'should return a list of properties defined by the API' do
140
- subject.should_not be_empty
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.stub(:namespace).and_return Time.now.to_i.to_s
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 'should raise an error' do
150
- expect{ subject }.to raise_error Frenetic::HypermediaError
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 'should initialize the mock with the provided values' do
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 'should raise an error' do
174
- expect{subject}.to raise_error Frenetic::ClientError
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 'should return a mock instance of the resource' do
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 'should have default attributes' do
200
- subject.name.should be_nil
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 'should set the appropriate values' do
208
- subject.name.should == 'foo'
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 'should not create accessors' do
260
+ it 'does not create accessors' do
216
261
  expect{ subject.gender }.to raise_error NoMethodError
217
262
  end
218
263
 
219
- it 'should be accessible in @params' do
220
- params = subject.instance_variable_get( '@params' )
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.stub(:namespace).and_return Time.now.to_i.to_s
274
+ allow(MyNamespace::MyTempResource)
275
+ .to receive(:namespace)
276
+ .and_return(Time.now.to_i.to_s)
231
277
  end
232
278
 
233
- it 'should raise an error' do
234
- expect{ subject }.to raise_error Frenetic::HypermediaError
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 { should == { 'name' => 'me' } }
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
@@ -1,5 +1,4 @@
1
1
  RSpec.configure do |config|
2
2
  config.filter_run focus:true
3
3
  config.run_all_when_everything_filtered = true
4
- config.treat_symbols_as_metadata_keys_with_true_values = true
5
4
  end
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.20.alpha.6
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: 2013-05-17 00:00:00.000000000 Z
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.7
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.7
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.9.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.9.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: 2.13.0
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: 2.13.0
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.11.0
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.11.0
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.6.1
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.6.1
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/concerns/briefly_memoizable.rb
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/configuration.rb
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/concerns/breifly_memoizable_spec.rb
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/configuration_spec.rb
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: '0'
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: 1.8.23
239
+ rubygems_version: 2.2.2
228
240
  signing_key:
229
- specification_version: 3
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/concerns/breifly_memoizable_spec.rb
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/configuration_spec.rb
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