restful_resource 0.8.21 → 0.8.22
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbd9d3fc2f8b4e1308a4bb92d007f0894ee8c8e7
|
4
|
+
data.tar.gz: 55b69822c4588ccb230023dd1e715045e82fd16c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 644cd658071c796ebdf3d858881141a807030d07dc290a4afba422c200f607b9f953761df6dc37f3cd44f02922f8b7e858fb143c6c03c2a44a106cc4c387ba6d
|
7
|
+
data.tar.gz: 1193a0bd6224381ed8d0c5c8d02296ff688508d4f028fdcad80a0bbbbc6c6a1e7167ca97f401ccf556265426524023ee98e64fa247c645153caef62ad5a24d42
|
@@ -10,6 +10,16 @@ module RestfulResource
|
|
10
10
|
self.new(result)
|
11
11
|
end
|
12
12
|
end
|
13
|
+
|
14
|
+
def post(data: {}, **params)
|
15
|
+
begin
|
16
|
+
super(data: data, **params)
|
17
|
+
rescue HttpClient::UnprocessableEntity => e
|
18
|
+
errors = parse_json(e.response.body)
|
19
|
+
result = data.merge(errors)
|
20
|
+
self.new(result)
|
21
|
+
end
|
22
|
+
end
|
13
23
|
end
|
14
24
|
|
15
25
|
def self.included(base)
|
@@ -22,9 +22,13 @@ describe RestfulResource::HttpClient do
|
|
22
22
|
expect(response.status).to eq 200
|
23
23
|
end
|
24
24
|
|
25
|
-
it 'should raise error 422' do
|
25
|
+
it 'put should raise error 422' do
|
26
26
|
expect { @http_client.put('http://httpbin.org/status/422', data: { name: 'Mad cow' }) }.to raise_error(RestfulResource::HttpClient::UnprocessableEntity)
|
27
27
|
end
|
28
|
+
|
29
|
+
it 'post should raise error 422' do
|
30
|
+
expect { @http_client.post('http://httpbin.org/status/422', data: { name: 'Mad cow' }) }.to raise_error(RestfulResource::HttpClient::UnprocessableEntity)
|
31
|
+
end
|
28
32
|
end
|
29
33
|
|
30
34
|
describe 'Authentication' do
|
@@ -51,4 +51,49 @@ describe RestfulResource::RailsValidations do
|
|
51
51
|
expect(@object.valid?).to be_falsey
|
52
52
|
end
|
53
53
|
end
|
54
|
+
|
55
|
+
context "#post without errors" do
|
56
|
+
before :each do
|
57
|
+
data = {name: 'Barak'}
|
58
|
+
expected_response = RestfulResource::Response.new(body: {name: 'Barak'}.to_json)
|
59
|
+
expect_post("http://api.carwow.co.uk/dealers", expected_response, data: data)
|
60
|
+
|
61
|
+
@object = Dealer.post(data: data)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should return object' do
|
65
|
+
expect(@object.name).to eq 'Barak'
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should return valid object' do
|
69
|
+
expect(@object.valid?).to be_truthy
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "#post with errors" do
|
74
|
+
before :each do
|
75
|
+
data = {name: 'Leonardo'}
|
76
|
+
@error = 'Cannot use Ninja Turtles names'
|
77
|
+
expected_response = RestfulResource::Response.new(body: {errors: [@error]}.to_json)
|
78
|
+
expect_post_with_unprocessable_entity("http://api.carwow.co.uk/dealers", expected_response, data: data)
|
79
|
+
|
80
|
+
@object = Dealer.post(data: data)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should have an error" do
|
84
|
+
expect(@object.errors.count).to eq 1
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should have correct error' do
|
88
|
+
expect(@object.errors.first).to eq @error
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should return properly built object' do
|
92
|
+
expect(@object.name).to eq 'Leonardo'
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should return not valid object' do
|
96
|
+
expect(@object.valid?).to be_falsey
|
97
|
+
end
|
98
|
+
end
|
54
99
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -25,3 +25,9 @@ def expect_put_with_unprocessable_entity(url, response, data: {})
|
|
25
25
|
exception = RestfulResource::HttpClient::UnprocessableEntity.new(rest_client_response)
|
26
26
|
expect(@mock_http).to receive(:put).with(url, data: data).and_raise(exception)
|
27
27
|
end
|
28
|
+
|
29
|
+
def expect_post_with_unprocessable_entity(url, response, data: {})
|
30
|
+
rest_client_response = OpenStruct.new({body: response.body, headers: response.headers, code: response.status})
|
31
|
+
exception = RestfulResource::HttpClient::UnprocessableEntity.new(rest_client_response)
|
32
|
+
expect(@mock_http).to receive(:post).with(url, data: data).and_raise(exception)
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restful_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Santoro
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
165
|
version: '0'
|
166
166
|
requirements: []
|
167
167
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.
|
168
|
+
rubygems_version: 2.0.14
|
169
169
|
signing_key:
|
170
170
|
specification_version: 4
|
171
171
|
summary: A simple activerecord inspired rest resource base class implemented using
|