restful_resource 0.8.13 → 0.8.14

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: 7cc2e2227d67f0f5925bba55ea02ee8795cf86c1
4
- data.tar.gz: eba8c5e0e6bf9493d8d48d2504f43f576de18ede
3
+ metadata.gz: 9b8e326237bb1c642d55959bf1be9928b5ac0876
4
+ data.tar.gz: d02d72af334a19c74a626ea4765dd589ea0650e5
5
5
  SHA512:
6
- metadata.gz: 1b2325ac72e38a7d9c7ae3c4b497fbf9fa4c6003232f045ffc86456fc2cdff1b51c7d42bdc6ced68ab442936310b5d46bcfff4a3b78047a8f523f51410947c6d
7
- data.tar.gz: a7190eab0f5063fb7af132853266688f41ffb3aa821922c0ee958a796434bb162f2332c232e7379a3c4cf16bde393e98e1c43b2a6be99de5d98728f82399fcee
6
+ metadata.gz: cdb3fbef36a797c3dce90f3deef8f3fcc81074b6072d98ae5bc1c778e250b1c8572896ac592e6fe501d0b850cf180dd1aecd3d60bae1896ed5a707451fb09581
7
+ data.tar.gz: f3684e6c315892bda85f7c40d62f6ef4eda008eae39e82a7122427a6b2e02bafa10063331129a2de6968fcd974c6b8ee993dd09421472950930888da85e67972
@@ -40,6 +40,13 @@ module RestfulResource
40
40
  self.new(parse_json(response.body))
41
41
  end
42
42
 
43
+ def self.post(data: {}, **params)
44
+ url = collection_url(params)
45
+
46
+ response = http.post(url, data: data)
47
+ self.new(parse_json(response.body))
48
+ end
49
+
43
50
  def self.all
44
51
  self.where
45
52
  end
@@ -25,5 +25,14 @@ module RestfulResource
25
25
  end
26
26
  Response.new(body: response.body, headers: response.headers, status: response.code)
27
27
  end
28
+
29
+ def post(url, data: {})
30
+ begin
31
+ response = RestClient.post(url, data, :accept => :json, authorization: @authorization)
32
+ rescue RestClient::UnprocessableEntity => e
33
+ raise HttpClient::UnprocessableEntity.new(e.response)
34
+ end
35
+ Response.new(body: response.body, headers: response.headers, status: response.code)
36
+ end
28
37
  end
29
38
  end
@@ -1,3 +1,3 @@
1
1
  module RestfulResource
2
- VERSION = "0.8.13"
2
+ VERSION = "0.8.14"
3
3
  end
@@ -130,7 +130,7 @@ describe RestfulResource::Base do
130
130
  expect(object.name).to eq 'Audi'
131
131
  end
132
132
 
133
- it 'should put no data with params passed' do
133
+ it 'should put no data with no params passed' do
134
134
  expected_response = RestfulResource::Response.new(body: {name: 'Audi'}.to_json, status: 200)
135
135
  expect_put('http://api.carwow.co.uk/makes/1?make_slug=Volkswagen', expected_response)
136
136
 
@@ -139,7 +139,7 @@ describe RestfulResource::Base do
139
139
  expect(object.name).to eq 'Audi'
140
140
  end
141
141
 
142
- it 'should put data with no params passed' do
142
+ it 'should put data with params passed' do
143
143
  data = {make_slug: 'Audi'}
144
144
 
145
145
  expected_response = RestfulResource::Response.new(body: {name: 'Audi'}.to_json, status: 200)
@@ -162,6 +162,20 @@ describe RestfulResource::Base do
162
162
  end
163
163
  end
164
164
 
165
+ describe "#post" do
166
+ it "should post parameters to the collection url" do
167
+ data = {slug: 'audi-make', name: 'Audi', num_of_cars: 3}
168
+
169
+ expected_response = RestfulResource::Response.new(body: data.to_json, status: 200)
170
+ expect_post('http://api.carwow.co.uk/makes', expected_response, data: data)
171
+
172
+ object = Make.post(data: data)
173
+
174
+ expect(object.name).to eq 'Audi'
175
+ expect(object.num_of_cars).to eq 3
176
+ end
177
+ end
178
+
165
179
  describe ".as_json" do
166
180
  before :each do
167
181
  expected_response = RestfulResource::Response.new(body: [{name: 'Audi', slug: 'Audi-Slug'}, {name: 'Fiat', slug: 'Fiat-Slug'}].to_json)
@@ -16,6 +16,12 @@ describe RestfulResource::HttpClient do
16
16
  expect(response.status).to eq 200
17
17
  end
18
18
 
19
+ it 'should execute post' do
20
+ response = @http_client.post('http://httpbin.org/post', data: { name: 'Alfred' })
21
+ expect(response.body).to include "name\": \"Alfred"
22
+ expect(response.status).to eq 200
23
+ end
24
+
19
25
  it 'should raise error 422' do
20
26
  expect { @http_client.put('http://httpbin.org/status/422', data: { name: 'Mad cow' }) }.to raise_error(RestfulResource::HttpClient::UnprocessableEntity)
21
27
  end
data/spec/spec_helper.rb CHANGED
@@ -16,6 +16,10 @@ def expect_put(url, response, data: {})
16
16
  expect(@mock_http).to receive(:put).with(url, data: data).and_return(response)
17
17
  end
18
18
 
19
+ def expect_post(url, response, data: {})
20
+ expect(@mock_http).to receive(:post).with(url, data: data).and_return(response)
21
+ end
22
+
19
23
  def expect_put_with_unprocessable_entity(url, response, data: {})
20
24
  rest_client_response = OpenStruct.new({body: response.body, headers: response.headers, code: response.status})
21
25
  exception = RestfulResource::HttpClient::UnprocessableEntity.new(rest_client_response)
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.13
4
+ version: 0.8.14
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: 2014-10-30 00:00:00.000000000 Z
12
+ date: 2014-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler