bookingsync-api 0.1.5 → 0.1.6
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/CHANGELOG.md +4 -0
- data/lib/bookingsync/api/client.rb +9 -0
- data/lib/bookingsync/api/client/bookings.rb +26 -0
- data/lib/bookingsync/api/version.rb +1 -1
- data/spec/bookingsync/api/client/bookings_spec.rb +38 -0
- data/spec/bookingsync/api/client/rentals_amenities_spec.rb +1 -1
- data/spec/bookingsync/api/client_spec.rb +1 -1
- data/spec/bookingsync/api/response_spec.rb +1 -1
- data/spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_add_bookings_fee/adds_bookings_fee.yml +75 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_remove_bookings_fee/removes_bookings_fee_and_returns_with_booking.yml +75 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4bdc178f4f613906121ad78aad98201367df968
|
4
|
+
data.tar.gz: 2b8d7e57f9214e6c95723e063214f32ce12f5fc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62d73a7a7549eb864acdb2264704f773426a3846f39a3e614f5ba0faa7f3cb12422d570a7209d4b74b2c7f6b2f7bc697466e0c7a1d2c9d58c32018dfc7dae990
|
7
|
+
data.tar.gz: e34023ccf4e35aca1a5b1be1fa1e9f0deebb46e31cecf6e9dd965609e702923eb931722f7a4651e5ab28f8126749648ccc7bb4e125f372eda92322af12e583e9
|
data/CHANGELOG.md
CHANGED
@@ -142,6 +142,15 @@ module BookingSync::API
|
|
142
142
|
request :put, path, options
|
143
143
|
end
|
144
144
|
|
145
|
+
# Make a HTTP PATCH request
|
146
|
+
#
|
147
|
+
# @param path [String] The path, relative to {#api_endpoint}
|
148
|
+
# @param options [Hash] Body params for the request
|
149
|
+
# @return [Array<BookingSync::API::Resource>]
|
150
|
+
def patch(path, options = {})
|
151
|
+
request :patch, path, options
|
152
|
+
end
|
153
|
+
|
145
154
|
# Make a HTTP DELETE request
|
146
155
|
#
|
147
156
|
# @param path [String] The path, relative to {#api_endpoint}
|
@@ -82,6 +82,32 @@ module BookingSync::API
|
|
82
82
|
options = { bookings: [options] } if options
|
83
83
|
delete "bookings/#{booking}", options
|
84
84
|
end
|
85
|
+
|
86
|
+
# Add a bookings_fee
|
87
|
+
#
|
88
|
+
# @param booking [BookingSync::API::Resource|Integer] Booking or ID of the booking
|
89
|
+
# for which the bookings fee should be added
|
90
|
+
# @param options [Hash] Bookings_fee attributes.
|
91
|
+
# @return [BookingSync::API::Resource] Booking attributes, bookings fees included
|
92
|
+
# @example
|
93
|
+
# booking = @api.bookings.first
|
94
|
+
# @api.add_bookings_fee(booking, { price: 100, times_booked: 1, name_en: "Cleaning Fee" })
|
95
|
+
def add_bookings_fee(booking, options = {})
|
96
|
+
patch("bookings/#{booking}/add_bookings_fee", bookings_fees: [options]).pop
|
97
|
+
end
|
98
|
+
|
99
|
+
# Remove a bookings_fee
|
100
|
+
#
|
101
|
+
# @param booking [BookingSync::API::Resource|Integer] Booking or ID of the booking
|
102
|
+
# for which the bookings fee should be removed
|
103
|
+
# @param options [Integer] ID of the bookings_fee to be removed.
|
104
|
+
# @return [BookingSync::API::Resource] Booking attributes, remaining bookings fees included
|
105
|
+
# @example
|
106
|
+
# booking = @api.bookings.first
|
107
|
+
# @api.remove_bookings_fee(booking, 1)
|
108
|
+
def remove_bookings_fee(booking, bookings_fee_id)
|
109
|
+
patch("bookings/#{booking}/remove_bookings_fee/#{bookings_fee_id}").pop
|
110
|
+
end
|
85
111
|
end
|
86
112
|
end
|
87
113
|
end
|
@@ -117,4 +117,42 @@ describe BookingSync::API::Client::Bookings do
|
|
117
117
|
body: { bookings: [{ cancelation_reason: "payment_failed" }] }.to_json
|
118
118
|
end
|
119
119
|
end
|
120
|
+
|
121
|
+
describe ".add_bookings_fee_booking" do
|
122
|
+
let(:created_booking_id) {
|
123
|
+
find_resource("#{@casette_base_path}_create_booking/creates_a_booking.yml", "bookings")[:id]
|
124
|
+
}
|
125
|
+
|
126
|
+
around do |example|
|
127
|
+
VCR.use_cassette("BookingSync_API_Client_Bookings/_add_bookings_fee/adds_bookings_fee") do
|
128
|
+
example.run
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
it "returns with bookings_fee" do
|
133
|
+
booking = client.add_bookings_fee(created_booking_id, price: 50, times_booked: 1, name_en: "Airport transfer")
|
134
|
+
expect(booking).to be_kind_of(BookingSync::API::Resource)
|
135
|
+
expect(booking.bookings_fees).to eq(
|
136
|
+
[
|
137
|
+
{
|
138
|
+
id: 194398, booking_id: 840043, rentals_fee_id: nil, times_booked: 1, price: "50.0",
|
139
|
+
created_at: Time.parse("2017-10-29 10:16:57 UTC"), updated_at: Time.parse("2017-10-29 10:16:57 UTC"),
|
140
|
+
canceled_at: nil, commission: nil, payback_to_owner: nil, locked: nil,
|
141
|
+
name: "Airport transfer"
|
142
|
+
}
|
143
|
+
]
|
144
|
+
)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe ".remove_bookings_fee", :vcr do
|
149
|
+
let(:booking_id) { 840043 }
|
150
|
+
let(:bookings_fee_id) { 194396 }
|
151
|
+
|
152
|
+
it "removes bookings_fee and returns with booking" do
|
153
|
+
booking = client.remove_bookings_fee(booking_id, bookings_fee_id)
|
154
|
+
expect(booking).to be_kind_of(BookingSync::API::Resource)
|
155
|
+
expect(booking.bookings_fees).to eq([])
|
156
|
+
end
|
157
|
+
end
|
120
158
|
end
|
@@ -30,7 +30,7 @@ describe BookingSync::API::Client::RentalsAmenities do
|
|
30
30
|
}
|
31
31
|
|
32
32
|
it "returns rentals_amenity" do
|
33
|
-
|
33
|
+
client.rentals_amenity(prefetched_rentals_amenity_id)
|
34
34
|
assert_requested :get, bs_url("rentals_amenities/#{prefetched_rentals_amenity_id}")
|
35
35
|
end
|
36
36
|
end
|
@@ -118,7 +118,7 @@ describe BookingSync::API::Client do
|
|
118
118
|
|
119
119
|
it "requests with proper User-Agent" do
|
120
120
|
stub_get("resource", body: {}.to_json)
|
121
|
-
|
121
|
+
client.call(:get, "resource")
|
122
122
|
assert_requested :get, bs_url("resource"),
|
123
123
|
headers: { "User-Agent" =>
|
124
124
|
"BookingSync API gem v#{BookingSync::API::VERSION}" }
|
data/spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_add_bookings_fee/adds_bookings_fee.yml
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: patch
|
5
|
+
uri: https://www.bookingsync.com/api/v3/bookings/840043/add_bookings_fee
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"bookings_fees":[{"price":100,"times_booked":2,"name_en":"Cleaning Fee"}]}'
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- BookingSync API gem v0.1.5
|
12
|
+
Accept:
|
13
|
+
- application/vnd.api+json
|
14
|
+
Content-Type:
|
15
|
+
- application/vnd.api+json
|
16
|
+
Authorization:
|
17
|
+
- Bearer <<ACCESS_TOKEN>>
|
18
|
+
Accept-Encoding:
|
19
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
20
|
+
Connection:
|
21
|
+
- keep-alive
|
22
|
+
Keep-Alive:
|
23
|
+
- '30'
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Sun, 29 Oct 2017 10:16:57 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
Transfer-Encoding:
|
36
|
+
- chunked
|
37
|
+
Connection:
|
38
|
+
- keep-alive
|
39
|
+
X-Frame-Options:
|
40
|
+
- SAMEORIGIN
|
41
|
+
X-Xss-Protection:
|
42
|
+
- 1; mode=block
|
43
|
+
X-Content-Type-Options:
|
44
|
+
- nosniff
|
45
|
+
X-Updated-Since-Request-Synced-At:
|
46
|
+
- 2017-10-29 10:16:57 UTC
|
47
|
+
X-Ratelimit-Limit:
|
48
|
+
- '100000'
|
49
|
+
X-Ratelimit-Reset:
|
50
|
+
- '1509274800'
|
51
|
+
X-Ratelimit-Remaining:
|
52
|
+
- '99995'
|
53
|
+
Cache-Control:
|
54
|
+
- max-age=0, private, must-revalidate
|
55
|
+
P3p:
|
56
|
+
- CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
|
57
|
+
OUR SAMi OTRo UNRo PUBi IND UNI STA"
|
58
|
+
Set-Cookie:
|
59
|
+
- ahoy_track=true; path=/; secure
|
60
|
+
- ahoy_visit=a6283719-06f8-4a28-b009-d4956eb857e4; path=/; expires=Sun, 05 Nov
|
61
|
+
2017 10:16:57 -0000; secure
|
62
|
+
- ahoy_visitor=bf93817c-f70e-49c4-a062-b01dca375152; path=/; expires=Tue, 29
|
63
|
+
Oct 2019 10:16:57 -0000; secure
|
64
|
+
X-Request-Id:
|
65
|
+
- db7d67d5-19c2-438b-a9e1-16f861b9a4c4
|
66
|
+
X-Runtime:
|
67
|
+
- '0.130803'
|
68
|
+
Strict-Transport-Security:
|
69
|
+
- max-age=31536000
|
70
|
+
body:
|
71
|
+
encoding: ASCII-8BIT
|
72
|
+
string: '{"bookings":[{"id":840043,"start_at":"2017-01-03T00:00:00Z","end_at":"2019-03-25T21:45:00Z","booked":true,"unavailable":false,"tentative_expires_at":null,"rental_id":5116,"client_id":null,"initial_price":"200.0","discount":"","final_price":"600.0","notes":null,"adults":null,"children":null,"account_id":3837,"created_at":"2016-12-12T11:52:09Z","updated_at":"2017-10-29T10:16:57Z","canceled_at":"2016-12-12T12:13:16Z","downpayment":null,"currency":"USD","source_id":null,"damage_deposit":"0.0","reference":"00I06J","bookings_fees":[{"id":194398,"booking_id":840043,"rentals_fee_id":null,"times_booked":1,"price":"50.0","created_at":"2017-10-29T10:16:57Z","updated_at":"2017-10-29T10:16:57Z","canceled_at":null,"commission":null,"payback_to_owner":null,"locked":null,"name":"Airport transfer"}]}]}'
|
73
|
+
http_version:
|
74
|
+
recorded_at: Sun, 29 Oct 2017 10:16:57 GMT
|
75
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,75 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: patch
|
5
|
+
uri: https://www.bookingsync.com/api/v3/bookings/840043/remove_bookings_fee/194396
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: "{}"
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- BookingSync API gem v0.1.5
|
12
|
+
Accept:
|
13
|
+
- application/vnd.api+json
|
14
|
+
Content-Type:
|
15
|
+
- application/vnd.api+json
|
16
|
+
Authorization:
|
17
|
+
- Bearer <<ACCESS_TOKEN>>
|
18
|
+
Accept-Encoding:
|
19
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
20
|
+
Connection:
|
21
|
+
- keep-alive
|
22
|
+
Keep-Alive:
|
23
|
+
- '30'
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Sun, 29 Oct 2017 10:43:52 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
Transfer-Encoding:
|
36
|
+
- chunked
|
37
|
+
Connection:
|
38
|
+
- keep-alive
|
39
|
+
X-Frame-Options:
|
40
|
+
- SAMEORIGIN
|
41
|
+
X-Xss-Protection:
|
42
|
+
- 1; mode=block
|
43
|
+
X-Content-Type-Options:
|
44
|
+
- nosniff
|
45
|
+
X-Updated-Since-Request-Synced-At:
|
46
|
+
- 2017-10-29 10:43:52 UTC
|
47
|
+
X-Ratelimit-Limit:
|
48
|
+
- '100000'
|
49
|
+
X-Ratelimit-Reset:
|
50
|
+
- '1509274800'
|
51
|
+
X-Ratelimit-Remaining:
|
52
|
+
- '99993'
|
53
|
+
Cache-Control:
|
54
|
+
- max-age=0, private, must-revalidate
|
55
|
+
P3p:
|
56
|
+
- CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
|
57
|
+
OUR SAMi OTRo UNRo PUBi IND UNI STA"
|
58
|
+
Set-Cookie:
|
59
|
+
- ahoy_track=true; path=/; secure
|
60
|
+
- ahoy_visit=95efe1f9-dd76-4436-91d2-99079a1d8618; path=/; expires=Sun, 05 Nov
|
61
|
+
2017 10:43:52 -0000; secure
|
62
|
+
- ahoy_visitor=bd1c23be-fbc2-46e1-9afb-db65d5ba5fe3; path=/; expires=Tue, 29
|
63
|
+
Oct 2019 10:43:52 -0000; secure
|
64
|
+
X-Request-Id:
|
65
|
+
- b47cb7ec-be49-4c29-8d46-7960f0ea2e7c
|
66
|
+
X-Runtime:
|
67
|
+
- '0.128591'
|
68
|
+
Strict-Transport-Security:
|
69
|
+
- max-age=31536000
|
70
|
+
body:
|
71
|
+
encoding: ASCII-8BIT
|
72
|
+
string: '{"bookings":[{"id":840043,"start_at":"2017-01-03T00:00:00Z","end_at":"2019-03-25T21:45:00Z","booked":true,"unavailable":false,"tentative_expires_at":null,"rental_id":5116,"client_id":null,"initial_price":"200.0","discount":"","final_price":"200.0","notes":null,"adults":null,"children":null,"account_id":3837,"created_at":"2016-12-12T11:52:09Z","updated_at":"2017-10-29T10:43:52Z","canceled_at":"2016-12-12T12:13:16Z","downpayment":null,"currency":"USD","source_id":null,"damage_deposit":"0.0","reference":"00I06J","bookings_fees":[]}]}'
|
73
|
+
http_version:
|
74
|
+
recorded_at: Sun, 29 Oct 2017 10:43:53 GMT
|
75
|
+
recorded_with: VCR 3.0.3
|
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.1.
|
4
|
+
version: 0.1.6
|
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: 2017-
|
11
|
+
date: 2017-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -238,6 +238,7 @@ files:
|
|
238
238
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingComments/_delete_booking_comment/deletes_given_booking_comment.yml
|
239
239
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingComments/_edit_booking_comment/returns_updated_booking_comment.yml
|
240
240
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingComments/_edit_booking_comment/updates_booking_comment.yml
|
241
|
+
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_add_bookings_fee/adds_bookings_fee.yml
|
241
242
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_booking/returns_a_single_booking.yml
|
242
243
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_booking/returns_a_single_canceled_booking.yml
|
243
244
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_bookings/pagination/with_a_block/yields_block_with_batch_of_bookings.yml
|
@@ -247,6 +248,7 @@ files:
|
|
247
248
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_cancel_booking/cancels_given_booking_and_passes_options_along_as_bookings_payload.yml
|
248
249
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_create_booking/creates_a_booking.yml
|
249
250
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_edit_booking/updates_given_booking_by_ID.yml
|
251
|
+
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_remove_bookings_fee/removes_bookings_fee_and_returns_with_booking.yml
|
250
252
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingsFees/_bookings_fee/returns_a_single_bookings_fee.yml
|
251
253
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingsFees/_bookings_fees/returns_bookings_fees.yml
|
252
254
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingsPayments/_bookings_payment/returns_a_single_bookings_payment.yml
|
@@ -457,6 +459,7 @@ test_files:
|
|
457
459
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingComments/_delete_booking_comment/deletes_given_booking_comment.yml
|
458
460
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingComments/_edit_booking_comment/returns_updated_booking_comment.yml
|
459
461
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingComments/_edit_booking_comment/updates_booking_comment.yml
|
462
|
+
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_add_bookings_fee/adds_bookings_fee.yml
|
460
463
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_booking/returns_a_single_booking.yml
|
461
464
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_booking/returns_a_single_canceled_booking.yml
|
462
465
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_bookings/pagination/with_a_block/yields_block_with_batch_of_bookings.yml
|
@@ -466,6 +469,7 @@ test_files:
|
|
466
469
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_cancel_booking/cancels_given_booking_and_passes_options_along_as_bookings_payload.yml
|
467
470
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_create_booking/creates_a_booking.yml
|
468
471
|
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_edit_booking/updates_given_booking_by_ID.yml
|
472
|
+
- spec/fixtures/cassettes/BookingSync_API_Client_Bookings/_remove_bookings_fee/removes_bookings_fee_and_returns_with_booking.yml
|
469
473
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingsFees/_bookings_fee/returns_a_single_bookings_fee.yml
|
470
474
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingsFees/_bookings_fees/returns_bookings_fees.yml
|
471
475
|
- spec/fixtures/cassettes/BookingSync_API_Client_BookingsPayments/_bookings_payment/returns_a_single_bookings_payment.yml
|