restful_resource 2.7.0 → 2.10.3
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 +4 -4
- data/.circleci/config.yml +1 -1
- data/.rubocop_todo.yml +119 -70
- data/CHANGELOG.md +20 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +68 -59
- data/lib/restful_resource.rb +1 -1
- data/lib/restful_resource/base.rb +28 -32
- data/lib/restful_resource/http_client.rb +5 -0
- data/lib/restful_resource/rails_validations.rb +4 -1
- data/lib/restful_resource/redirections.rb +6 -4
- data/lib/restful_resource/version.rb +1 -1
- data/restful_resource.gemspec +9 -8
- data/spec/restful_resource/associations_spec.rb +0 -2
- data/spec/restful_resource/base_spec.rb +14 -14
- data/spec/restful_resource/http_client_configuration_spec.rb +8 -8
- data/spec/restful_resource/http_client_spec.rb +61 -147
- data/spec/restful_resource/rails_validations_spec.rb +59 -10
- data/spec/spec_helper.rb +8 -0
- metadata +47 -33
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
79
|
+
expect_put('http://api.carwow.co.uk/dealers/1', expected_response, data: data)
|
80
80
|
|
81
|
-
@object = Dealer.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
4
|
+
version: 2.10.3
|
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:
|
12
|
+
date: 2020-11-12 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:
|
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:
|
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:
|
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:
|
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: :
|
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:
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
237
|
+
version: '1.4'
|
224
238
|
description: A simple activerecord inspired rest resource base class implemented using
|
225
239
|
rest-client
|
226
240
|
email:
|
@@ -274,7 +288,7 @@ homepage: http://www.github.com/carwow/restful_resource
|
|
274
288
|
licenses:
|
275
289
|
- MIT
|
276
290
|
metadata: {}
|
277
|
-
post_install_message:
|
291
|
+
post_install_message:
|
278
292
|
rdoc_options: []
|
279
293
|
require_paths:
|
280
294
|
- lib
|
@@ -289,8 +303,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
303
|
- !ruby/object:Gem::Version
|
290
304
|
version: '0'
|
291
305
|
requirements: []
|
292
|
-
rubygems_version: 3.
|
293
|
-
signing_key:
|
306
|
+
rubygems_version: 3.1.2
|
307
|
+
signing_key:
|
294
308
|
specification_version: 4
|
295
309
|
summary: A simple activerecord inspired rest resource base class implemented using
|
296
310
|
rest-client
|