restful_resource 2.8.0 → 2.11.0

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.
@@ -7,7 +7,7 @@ RSpec.describe RestfulResource::RailsValidations do
7
7
  allow(Dealer).to receive(:http).and_return(@mock_http)
8
8
  end
9
9
 
10
- context '#patch without errors' do
10
+ describe '#patch without errors' do
11
11
  before do
12
12
  data = { name: 'Barak' }
13
13
  expected_response = RestfulResource::Response.new(body: { name: 'Barak' }.to_json)
@@ -25,7 +25,7 @@ RSpec.describe RestfulResource::RailsValidations do
25
25
  end
26
26
  end
27
27
 
28
- context '#patch with errors' do
28
+ describe '#patch with errors' do
29
29
  before do
30
30
  data = { name: 'Leonardo' }
31
31
  @error = 'Cannot use Ninja Turtles names'
@@ -72,13 +72,13 @@ RSpec.describe RestfulResource::RailsValidations do
72
72
  end
73
73
  end
74
74
 
75
- context '#patch without errors' do
75
+ describe '#put without errors' do
76
76
  before do
77
77
  data = { name: 'Barak' }
78
78
  expected_response = RestfulResource::Response.new(body: { name: 'Barak' }.to_json)
79
- expect_patch('http://api.carwow.co.uk/dealers/1', expected_response, data: data)
79
+ expect_put('http://api.carwow.co.uk/dealers/1', expected_response, data: data)
80
80
 
81
- @object = Dealer.patch(1, data: data)
81
+ @object = Dealer.put(1, data: data)
82
82
  end
83
83
 
84
84
  it 'returns object' do
@@ -90,7 +90,7 @@ RSpec.describe RestfulResource::RailsValidations do
90
90
  end
91
91
  end
92
92
 
93
- context '#put with errors' do
93
+ describe '#put with errors' do
94
94
  before do
95
95
  data = { name: 'Leonardo' }
96
96
  @error = 'Cannot use Ninja Turtles names'
@@ -137,7 +137,7 @@ RSpec.describe RestfulResource::RailsValidations do
137
137
  end
138
138
  end
139
139
 
140
- context '#post without errors' do
140
+ describe '#post without errors' do
141
141
  before do
142
142
  data = { name: 'Barak' }
143
143
  expected_response = RestfulResource::Response.new(body: { name: 'Barak' }.to_json)
@@ -155,7 +155,7 @@ RSpec.describe RestfulResource::RailsValidations do
155
155
  end
156
156
  end
157
157
 
158
- context '#post with errors' do
158
+ describe '#post with errors' do
159
159
  before do
160
160
  data = { name: 'Leonardo' }
161
161
  @error = 'Cannot use Ninja Turtles names'
@@ -192,7 +192,7 @@ RSpec.describe RestfulResource::RailsValidations do
192
192
  end
193
193
  end
194
194
 
195
- context '#get without errors' do
195
+ describe '#get without errors' do
196
196
  before do
197
197
  expected_response = RestfulResource::Response.new(body: { name: 'Barak' }.to_json)
198
198
  expect_get('http://api.carwow.co.uk/dealers', expected_response)
@@ -209,7 +209,7 @@ RSpec.describe RestfulResource::RailsValidations do
209
209
  end
210
210
  end
211
211
 
212
- context '#get with errors' do
212
+ describe '#get with errors' do
213
213
  before do
214
214
  @error = 'Missing parameter'
215
215
  expected_response = RestfulResource::Response.new(body: { errors: [@error] }.to_json)
@@ -239,4 +239,53 @@ RSpec.describe RestfulResource::RailsValidations do
239
239
  expect(@object.errors).to eq @error
240
240
  end
241
241
  end
242
+
243
+ describe '#delete' do
244
+ subject { Dealer.delete(123) }
245
+
246
+ context 'without errors' do
247
+ before do
248
+ expected_response = RestfulResource::Response.new(body: { name: 'Barak' }.to_json)
249
+ expect_delete('http://api.carwow.co.uk/dealers/123', expected_response)
250
+ end
251
+
252
+ it 'returns object' do
253
+ expect(subject.name).to eq 'Barak'
254
+ end
255
+
256
+ it 'returns valid object' do
257
+ expect(subject).to be_valid
258
+ end
259
+ end
260
+
261
+ context 'with errors' do
262
+ let(:errors) { { errors: ['Cannot use Ninja Turtles names'] } }
263
+
264
+ before do
265
+ expected_response = RestfulResource::Response.new(body: errors.to_json)
266
+ expect_delete_with_unprocessable_entity('http://api.carwow.co.uk/dealers/123', expected_response)
267
+ end
268
+
269
+ it 'has an error' do
270
+ expect(subject.errors.count).to eq 1
271
+ end
272
+
273
+ it 'has correct error' do
274
+ expect(subject.errors.first).to eq 'Cannot use Ninja Turtles names'
275
+ end
276
+
277
+ it 'returns not valid object' do
278
+ expect(subject).not_to be_valid
279
+ end
280
+
281
+ context 'when there is a single error' do
282
+ let(:errors) { 'Cannot use Ninja Turtles names' }
283
+
284
+ it 'handles errors returned as root object' do
285
+ expect(subject).not_to be_valid
286
+ expect(subject.errors).to eq errors
287
+ end
288
+ end
289
+ end
290
+ end
242
291
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'pry'
1
2
  require 'rspec'
2
3
  require 'rspec/its'
3
4
  require_relative '../lib/restful_resource'
@@ -65,3 +66,10 @@ def expect_post_with_unprocessable_entity(url, response, data: {})
65
66
  exception = RestfulResource::HttpClient::UnprocessableEntity.new(request, rest_client_response)
66
67
  expect(@mock_http).to receive(:post).with(url, data: data, headers: {}, open_timeout: nil, timeout: nil).and_raise(exception)
67
68
  end
69
+
70
+ def expect_delete_with_unprocessable_entity(url, response)
71
+ request = RestfulResource::Request.new(:delete, url)
72
+ rest_client_response = OpenStruct.new(body: response.body, headers: response.headers, code: response.status)
73
+ exception = RestfulResource::HttpClient::UnprocessableEntity.new(request, rest_client_response)
74
+ expect(@mock_http).to receive(:delete).with(url, headers: {}, open_timeout: nil, timeout: nil).and_raise(exception)
75
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Santoro
8
8
  - Federico Rebora
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-11-12 00:00:00.000000000 Z
12
+ date: 2021-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -40,7 +40,7 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rake
43
+ name: pry
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -54,7 +54,7 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: rspec
57
+ name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
@@ -68,7 +68,7 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: rspec_junit_formatter
71
+ name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
@@ -96,47 +96,61 @@ dependencies:
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
- name: activesupport
99
+ name: rspec_junit_formatter
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
- type: :runtime
105
+ type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: activesupport
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '6.0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '6.0'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: faraday
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
130
  - - "~>"
117
131
  - !ruby/object:Gem::Version
118
- version: 0.15.0
132
+ version: '1.0'
119
133
  type: :runtime
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
137
  - - "~>"
124
138
  - !ruby/object:Gem::Version
125
- version: 0.15.0
139
+ version: '1.0'
126
140
  - !ruby/object:Gem::Dependency
127
141
  name: faraday-cdn-metrics
128
142
  requirement: !ruby/object:Gem::Requirement
129
143
  requirements:
130
- - - ">="
144
+ - - "~>"
131
145
  - !ruby/object:Gem::Version
132
- version: '0'
146
+ version: '0.2'
133
147
  type: :runtime
134
148
  prerelease: false
135
149
  version_requirements: !ruby/object:Gem::Requirement
136
150
  requirements:
137
- - - ">="
151
+ - - "~>"
138
152
  - !ruby/object:Gem::Version
139
- version: '0'
153
+ version: '0.2'
140
154
  - !ruby/object:Gem::Dependency
141
155
  name: faraday-encoding
142
156
  requirement: !ruby/object:Gem::Requirement
@@ -155,30 +169,30 @@ dependencies:
155
169
  name: faraday-http-cache
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
- - - ">="
172
+ - - "~>"
159
173
  - !ruby/object:Gem::Version
160
- version: '0'
174
+ version: '2.2'
161
175
  type: :runtime
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - ">="
179
+ - - "~>"
166
180
  - !ruby/object:Gem::Version
167
- version: '0'
181
+ version: '2.2'
168
182
  - !ruby/object:Gem::Dependency
169
183
  name: faraday_middleware
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
- - - ">="
186
+ - - "~>"
173
187
  - !ruby/object:Gem::Version
174
- version: '0'
188
+ version: '1.0'
175
189
  type: :runtime
176
190
  prerelease: false
177
191
  version_requirements: !ruby/object:Gem::Requirement
178
192
  requirements:
179
- - - ">="
193
+ - - "~>"
180
194
  - !ruby/object:Gem::Version
181
- version: '0'
195
+ version: '1.0'
182
196
  - !ruby/object:Gem::Dependency
183
197
  name: link_header
184
198
  requirement: !ruby/object:Gem::Requirement
@@ -197,30 +211,30 @@ dependencies:
197
211
  name: rack
198
212
  requirement: !ruby/object:Gem::Requirement
199
213
  requirements:
200
- - - ">="
214
+ - - "~>"
201
215
  - !ruby/object:Gem::Version
202
- version: '0'
216
+ version: '2.2'
203
217
  type: :runtime
204
218
  prerelease: false
205
219
  version_requirements: !ruby/object:Gem::Requirement
206
220
  requirements:
207
- - - ">="
221
+ - - "~>"
208
222
  - !ruby/object:Gem::Version
209
- version: '0'
223
+ version: '2.2'
210
224
  - !ruby/object:Gem::Dependency
211
225
  name: typhoeus
212
226
  requirement: !ruby/object:Gem::Requirement
213
227
  requirements:
214
- - - ">="
228
+ - - "~>"
215
229
  - !ruby/object:Gem::Version
216
- version: '0'
230
+ version: '1.4'
217
231
  type: :runtime
218
232
  prerelease: false
219
233
  version_requirements: !ruby/object:Gem::Requirement
220
234
  requirements:
221
- - - ">="
235
+ - - "~>"
222
236
  - !ruby/object:Gem::Version
223
- version: '0'
237
+ version: '1.4'
224
238
  description: A simple activerecord inspired rest resource base class implemented using
225
239
  rest-client
226
240
  email:
@@ -257,6 +271,7 @@ files:
257
271
  - lib/restful_resource/request.rb
258
272
  - lib/restful_resource/resource_id_missing_error.rb
259
273
  - lib/restful_resource/response.rb
274
+ - lib/restful_resource/strict_open_struct.rb
260
275
  - lib/restful_resource/version.rb
261
276
  - restful_resource.gemspec
262
277
  - spec/fixtures.rb
@@ -274,7 +289,7 @@ homepage: http://www.github.com/carwow/restful_resource
274
289
  licenses:
275
290
  - MIT
276
291
  metadata: {}
277
- post_install_message:
292
+ post_install_message:
278
293
  rdoc_options: []
279
294
  require_paths:
280
295
  - lib
@@ -289,8 +304,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
289
304
  - !ruby/object:Gem::Version
290
305
  version: '0'
291
306
  requirements: []
292
- rubygems_version: 3.0.3
293
- signing_key:
307
+ rubygems_version: 3.1.4
308
+ signing_key:
294
309
  specification_version: 4
295
310
  summary: A simple activerecord inspired rest resource base class implemented using
296
311
  rest-client