hotel_beds 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hotel_beds/hotel_search/response.rb +14 -15
- data/lib/hotel_beds/version.rb +1 -1
- data/spec/features/hotel_search_spec.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10469eb089bdf74c2f5bfb79c02780e3247f38fe
|
4
|
+
data.tar.gz: 7f40bd15278d41318d7d394ce027a93941ddaf1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb9730199eaf2632e091b10296a9ac19a00aa11be15a24cab56cb448f41b9fd2683ac0790e7dafd375060498dc70f9e63c0e6612e0eac3f4e86357e4a05948ea
|
7
|
+
data.tar.gz: 6e18d34e27e47ec58c4fc61a8cef9fec1700bfacb7d36b37ecbeca68aac4a9854abd11ca4b8635bc996e285c1ceaa21a258219e8da8d2fa3fb358bf221fd91a6
|
@@ -37,23 +37,22 @@ module HotelBeds
|
|
37
37
|
def hotels
|
38
38
|
body.css("ServiceHotel").lazy.map do |hotel|
|
39
39
|
HotelBeds::Model::Hotel.new({
|
40
|
-
id: hotel.
|
41
|
-
name: hotel.
|
40
|
+
id: hotel.at_css("HotelInfo Code").content,
|
41
|
+
name: hotel.at_css("HotelInfo Name").content,
|
42
42
|
images: hotel.css("HotelInfo ImageList Image Url").map(&:content),
|
43
|
-
latitude: hotel.
|
44
|
-
longitude: hotel.
|
43
|
+
latitude: hotel.at_css("HotelInfo Position").attr("latitude"),
|
44
|
+
longitude: hotel.at_css("HotelInfo Position").attr("longitude"),
|
45
45
|
results: parse_available_rooms(hotel.css("AvailableRoom"))
|
46
46
|
})
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
private
|
51
|
-
|
52
51
|
def parse_available_rooms(rooms)
|
53
52
|
Array(rooms).map do |room|
|
54
53
|
{
|
55
|
-
adult_count: room.
|
56
|
-
child_count: room.
|
54
|
+
adult_count: room.at_css("HotelOccupancy AdultCount").content,
|
55
|
+
child_count: room.at_css("HotelOccupancy ChildCount").content,
|
57
56
|
rooms: parse_hotel_rooms(room.css("HotelRoom"))
|
58
57
|
}
|
59
58
|
end
|
@@ -64,21 +63,21 @@ module HotelBeds
|
|
64
63
|
{
|
65
64
|
number_available: room.attr("availCount"),
|
66
65
|
id: room.attr("SHRUI"),
|
67
|
-
description: room.
|
68
|
-
board: room.
|
69
|
-
price: room
|
70
|
-
currency: body.
|
71
|
-
rates: parse_price_list(room.css("PriceList Price"))
|
66
|
+
description: room.at_css("RoomType").content,
|
67
|
+
board: room.at_css("Board").content,
|
68
|
+
price: ((room > "Price") > "Amount").first.content,
|
69
|
+
currency: body.at_css("Currency").attr("code"),
|
70
|
+
rates: parse_price_list(room.css("Price PriceList Price"))
|
72
71
|
}
|
73
72
|
end
|
74
73
|
end
|
75
74
|
|
76
75
|
def parse_price_list(prices)
|
77
76
|
Array(prices).inject({}) do |result, price|
|
78
|
-
from = Date.parse(price.
|
79
|
-
to = Date.parse(price.
|
77
|
+
from = Date.parse(price.at_css("DateTimeFrom").attr("date"))
|
78
|
+
to = Date.parse(price.at_css("DateTimeTo").attr("date"))
|
80
79
|
dates = (from..to).to_a
|
81
|
-
amount = BigDecimal.new(price.
|
80
|
+
amount = BigDecimal.new(price.at_css("Amount").content, 3)
|
82
81
|
dates.each do |date|
|
83
82
|
result.merge!(date => amount)
|
84
83
|
end
|
data/lib/hotel_beds/version.rb
CHANGED
@@ -10,7 +10,7 @@ RSpec.describe "performing a hotel search" do
|
|
10
10
|
proxy: ENV.fetch("HOTEL_BEDS_PROXY", nil)
|
11
11
|
})
|
12
12
|
@check_in_date = Date.today + 28 + rand(10)
|
13
|
-
@check_out_date = @check_in_date + rand(3) + 1
|
13
|
+
@check_out_date = @check_in_date + rand(3) + rand(2) + 1
|
14
14
|
@response = @client.perform_hotel_search({
|
15
15
|
check_in_date: @check_in_date,
|
16
16
|
check_out_date: @check_out_date,
|
@@ -44,7 +44,7 @@ RSpec.describe "performing a hotel search" do
|
|
44
44
|
expect(room.price).to eq(room.rates.values.inject(:+))
|
45
45
|
end
|
46
46
|
|
47
|
-
it "should have the same number of rates as nights
|
47
|
+
it "should have the same number of rates as nights requested" do
|
48
48
|
room = subject.first.results.first.rooms.first
|
49
49
|
expect(room.rates.size).to eq(check_out_date - check_in_date)
|
50
50
|
end
|