bookingsync-api 0.0.18 → 0.0.19
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3d23970ddeff09666633feb1b63444bdcbfcf0d
|
4
|
+
data.tar.gz: fe419d0219da0c64ef63646603eb485574b88c9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3037d88848cf496cf6890bba67386110e518b6cbdc579e078c3280b2b6433befe36b099b0a09a727087eb7b660eee784a181e78688e0bf74f3d19bcad415c6fa
|
7
|
+
data.tar.gz: 0113e5eeccf400446ef71c0722cd6cf40e7b3385963d743c04f61eac6e94f7826eb57f7c16b950174fd05ee62e866ee9fce364a0127e556141a25efb5819a340
|
@@ -287,9 +287,9 @@ module BookingSync::API
|
|
287
287
|
case response.status
|
288
288
|
when 204; nil # destroy/cancel
|
289
289
|
when 200..299; response
|
290
|
-
when 401; raise Unauthorized.new
|
291
|
-
when 404; raise NotFound.new
|
292
|
-
when 422; raise UnprocessableEntity.new
|
290
|
+
when 401; raise Unauthorized.new(response)
|
291
|
+
when 404; raise NotFound.new(response)
|
292
|
+
when 422; raise UnprocessableEntity.new(response)
|
293
293
|
else raise UnsupportedResponse.new(response)
|
294
294
|
end
|
295
295
|
end
|
@@ -1,11 +1,6 @@
|
|
1
1
|
module BookingSync::API
|
2
2
|
# Class for rescuing all BS API errors
|
3
|
-
class Error < StandardError
|
4
|
-
class Unauthorized < Error; end
|
5
|
-
class UnprocessableEntity < Error; end
|
6
|
-
class NotFound < Error; end
|
7
|
-
|
8
|
-
class UnsupportedResponse < Error
|
3
|
+
class Error < StandardError
|
9
4
|
attr_reader :status, :headers, :body
|
10
5
|
|
11
6
|
def initialize(response)
|
@@ -14,11 +9,20 @@ module BookingSync::API
|
|
14
9
|
@body = response.body
|
15
10
|
end
|
16
11
|
|
17
|
-
def message
|
18
|
-
%Q{
|
12
|
+
def message(message = self.class)
|
13
|
+
%Q{#{message}
|
19
14
|
HTTP status code : #{status}
|
20
15
|
Headers : #{headers}
|
21
16
|
Body : #{body}}
|
22
17
|
end
|
23
18
|
end
|
19
|
+
|
20
|
+
class Unauthorized < Error; end
|
21
|
+
class UnprocessableEntity < Error; end
|
22
|
+
class NotFound < Error; end
|
23
|
+
class UnsupportedResponse < Error
|
24
|
+
def message
|
25
|
+
super("Received unsupported response from BookingSync API")
|
26
|
+
end
|
27
|
+
end
|
24
28
|
end
|
@@ -35,10 +35,13 @@ describe BookingSync::API::Client do
|
|
35
35
|
|
36
36
|
context "on 422 response" do
|
37
37
|
it "raises UnprocessableEntity exception" do
|
38
|
-
stub_post("resource", status: 422
|
38
|
+
stub_post("resource", status: 422, body: { errors: { country_code:
|
39
|
+
["is required"] } }.to_json)
|
39
40
|
expect {
|
40
|
-
client.post("resource", {key: :value})
|
41
|
-
}.to raise_error(BookingSync::API::UnprocessableEntity)
|
41
|
+
client.post("resource", { key: :value })
|
42
|
+
}.to raise_error(BookingSync::API::UnprocessableEntity) { |error|
|
43
|
+
expect(error.message).to include '{"errors":{"country_code":["is required"]}}'
|
44
|
+
}
|
42
45
|
end
|
43
46
|
end
|
44
47
|
end
|
@@ -134,13 +137,14 @@ describe BookingSync::API::Client do
|
|
134
137
|
context "API returns unsupported status code outside 200..299 range" do
|
135
138
|
it "raises UnsupportedResponse exception" do
|
136
139
|
stub_get("resource", status: 405, body: "Whoops!",
|
137
|
-
headers: {"content-type"=>"application/vnd.api+json"})
|
140
|
+
headers: { "content-type" => "application/vnd.api+json" })
|
138
141
|
expect {
|
139
142
|
client.get("resource")
|
140
143
|
}.to raise_error(BookingSync::API::UnsupportedResponse) { |error|
|
141
144
|
expect(error.status).to eql(405)
|
142
|
-
expect(error.headers).to eq({"content-type"=>"application/vnd.api+json"})
|
145
|
+
expect(error.headers).to eq({ "content-type" => "application/vnd.api+json" })
|
143
146
|
expect(error.body).to eq("Whoops!")
|
147
|
+
expect(error.message).to include("Received unsupported response from BookingSync API")
|
144
148
|
}
|
145
149
|
end
|
146
150
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BookingSync::API::Error do
|
4
|
+
let(:client) { BookingSync::API::Client.new(test_access_token) }
|
5
|
+
before do
|
6
|
+
stub_get("resource", status: 422, body:
|
7
|
+
{ errors: { name: ["can't be blank"] } }.to_json)
|
8
|
+
end
|
9
|
+
let(:request) { client.get("resource") }
|
10
|
+
|
11
|
+
describe "#status" do
|
12
|
+
it "returns HTTP status of the response" do
|
13
|
+
expect { request }.to raise_error(BookingSync::API::Error) { |exception|
|
14
|
+
expect(exception.status).to eq 422
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#body" do
|
20
|
+
it "returns response body" do
|
21
|
+
expect { request }.to raise_error(BookingSync::API::Error) { |exception|
|
22
|
+
expect(exception.body).to eq '{"errors":{"name":["can\'t be blank"]}}'
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#headers" do
|
28
|
+
it "returns response headers" do
|
29
|
+
expect { request }.to raise_error(BookingSync::API::Error) { |exception|
|
30
|
+
expect(exception.headers).to eq({"content-type" =>
|
31
|
+
"application/vnd.api+json"})
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#message" do
|
37
|
+
it "returns standard exception message" do
|
38
|
+
expect { request }.to raise_error(BookingSync::API::Error) { |exception|
|
39
|
+
expect(exception.message).to eq(%Q{BookingSync::API::UnprocessableEntity
|
40
|
+
HTTP status code : 422
|
41
|
+
Headers : {"content-type"=>"application/vnd.api+json"}
|
42
|
+
Body : {"errors":{"name":["can't be blank"]}}})
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bookingsync-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sébastien Grosjean
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- spec/bookingsync/api/client/seasons_spec.rb
|
149
149
|
- spec/bookingsync/api/client/special_offers_spec.rb
|
150
150
|
- spec/bookingsync/api/client_spec.rb
|
151
|
+
- spec/bookingsync/api/error_spec.rb
|
151
152
|
- spec/bookingsync/api/relation_spec.rb
|
152
153
|
- spec/bookingsync/api/resource_spec.rb
|
153
154
|
- spec/bookingsync/api/response_spec.rb
|
@@ -271,6 +272,7 @@ test_files:
|
|
271
272
|
- spec/bookingsync/api/client/seasons_spec.rb
|
272
273
|
- spec/bookingsync/api/client/special_offers_spec.rb
|
273
274
|
- spec/bookingsync/api/client_spec.rb
|
275
|
+
- spec/bookingsync/api/error_spec.rb
|
274
276
|
- spec/bookingsync/api/relation_spec.rb
|
275
277
|
- spec/bookingsync/api/resource_spec.rb
|
276
278
|
- spec/bookingsync/api/response_spec.rb
|