hotels_pro 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +22 -0
  7. data/README.md +91 -0
  8. data/Rakefile +2 -0
  9. data/hotels_pro.gemspec +24 -0
  10. data/lib/hotels_pro.rb +69 -0
  11. data/lib/hotels_pro/api/api_method.rb +29 -0
  12. data/lib/hotels_pro/api/api_params.rb +29 -0
  13. data/lib/hotels_pro/api/elements/book_info.rb +27 -0
  14. data/lib/hotels_pro/api/elements/daily_rate.rb +12 -0
  15. data/lib/hotels_pro/api/elements/filter.rb +13 -0
  16. data/lib/hotels_pro/api/elements/hotel.rb +22 -0
  17. data/lib/hotels_pro/api/elements/lead_traveller.rb +15 -0
  18. data/lib/hotels_pro/api/elements/pax.rb +16 -0
  19. data/lib/hotels_pro/api/elements/pax_array.rb +17 -0
  20. data/lib/hotels_pro/api/elements/policy.rb +15 -0
  21. data/lib/hotels_pro/api/elements/room_response.rb +16 -0
  22. data/lib/hotels_pro/api/methods/allocate_hotel_code.rb +21 -0
  23. data/lib/hotels_pro/api/methods/amend_hotel_booking.rb +27 -0
  24. data/lib/hotels_pro/api/methods/cancel_hotel_booking.rb +20 -0
  25. data/lib/hotels_pro/api/methods/get_available_hotel.rb +28 -0
  26. data/lib/hotels_pro/api/methods/get_balance.rb +18 -0
  27. data/lib/hotels_pro/api/methods/get_hotel_booking_status.rb +21 -0
  28. data/lib/hotels_pro/api/methods/get_hotel_cancellation_policy.rb +19 -0
  29. data/lib/hotels_pro/api/methods/make_hotel_booking.rb +24 -0
  30. data/lib/hotels_pro/configuration.rb +14 -0
  31. data/lib/hotels_pro/query.rb +34 -0
  32. data/lib/hotels_pro/request.rb +43 -0
  33. data/lib/hotels_pro/response.rb +33 -0
  34. data/lib/hotels_pro/stubs.rb +66 -0
  35. data/lib/hotels_pro/stubs/stub.rb +23 -0
  36. data/lib/hotels_pro/underscorer.rb +21 -0
  37. data/lib/hotels_pro/version.rb +3 -0
  38. data/spec/api_params_helper.rb +8 -0
  39. data/spec/fixtures/allocate_hotel_code.json +1 -0
  40. data/spec/fixtures/amend_hotel_booking.json +1 -0
  41. data/spec/fixtures/cancel_hotel_booking.json +1 -0
  42. data/spec/fixtures/get_available_hotel.json +1 -0
  43. data/spec/fixtures/get_balance.json +1 -0
  44. data/spec/fixtures/get_hotel_booking_status.json +1 -0
  45. data/spec/fixtures/get_hotel_cancellation_policy.json +1 -0
  46. data/spec/fixtures/make_hotel_booking.json +1 -0
  47. data/spec/hotels_pro/api/.gitkeep +0 -0
  48. data/spec/hotels_pro/api/api_method_spec.rb +14 -0
  49. data/spec/hotels_pro/api/api_params_spec.rb +36 -0
  50. data/spec/hotels_pro/api/elements/pax_array_spec.rb +14 -0
  51. data/spec/hotels_pro/api/methods/allocate_hotel_code_spec.rb +34 -0
  52. data/spec/hotels_pro/api/methods/amend_hotel_booking_spec.rb +79 -0
  53. data/spec/hotels_pro/api/methods/cancel_hotel_booking_spec.rb +32 -0
  54. data/spec/hotels_pro/api/methods/get_available_hotel_spec.rb +83 -0
  55. data/spec/hotels_pro/api/methods/get_balance_spec.rb +26 -0
  56. data/spec/hotels_pro/api/methods/get_hotel_booking_status_spec.rb +31 -0
  57. data/spec/hotels_pro/api/methods/get_hotel_cancellation_policy_spec.rb +31 -0
  58. data/spec/hotels_pro/api/methods/make_hotel_booking_spec.rb +66 -0
  59. data/spec/hotels_pro/query_spec.rb +52 -0
  60. data/spec/hotels_pro/request_spec.rb +73 -0
  61. data/spec/hotels_pro/response_spec.rb +24 -0
  62. data/spec/hotels_pro/stubs/stub_spec.rb +41 -0
  63. data/spec/hotels_pro/stubs_spec.rb +37 -0
  64. data/spec/hotels_pro/underscorer_spec.rb +33 -0
  65. data/spec/request_helper.rb +6 -0
  66. data/spec/spec_helper.rb +15 -0
  67. metadata +222 -0
@@ -0,0 +1,21 @@
1
+ module HotelsPro
2
+ module Underscorer
3
+ # Detect nested hashes and underscore their keys
4
+ def underscore(object)
5
+ case object
6
+ when Hash
7
+ object.inject({}) do |hash, (k, v)|
8
+ hash[k.underscore] = underscore(v)
9
+ hash
10
+ end
11
+ when Array
12
+ object.inject([]) do |arr, element|
13
+ arr << underscore(element)
14
+ arr
15
+ end
16
+ else
17
+ object
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module HotelsPro
2
+ VERSION = "0.2"
3
+ end
@@ -0,0 +1,8 @@
1
+ module ApiParamsHelper
2
+ def mock_api_object(attributes)
3
+ object = Object.new
4
+ object.extend HotelsPro::Api::ApiParams
5
+ object.stub(:attributes).and_return(attributes)
6
+ object
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ {"responseId":5752179,"hotelCode":"US6X5G","availableHotels":[{"processId":"HF-56017745","hotelCode":"US6X5G","availabilityStatus":"InstantConfirmation","totalPrice":335,"totalTax":0,"totalSalePrice":0,"currency":"USD","boardType":"Continental Breakfast","rooms":[{"roomCategory":"Double 1 Queen Bed","paxes":[{"paxType":"Adult","age":30}],"totalRoomRate":335,"ratesPerNight":[{"date":"2012-09-09","amount":112},{"date":"2012-09-10","amount":112},{"date":"2012-09-11","amount":111}]}]},{"processId":"HG-99198765","hotelCode":"US6X5G","availabilityStatus":"InstantConfirmation","totalPrice":392,"totalTax":0,"totalSalePrice":0,"currency":"USD","boardType":"Continental Breakfast","rooms":[{"roomCategory":"Double Two Queen Beds","paxes":[{"paxType":"Adult","age":30}],"totalRoomRate":392,"ratesPerNight":[{"date":"2012-09-09","amount":131},{"date":"2012-09-10","amount":131},{"date":"2012-09-11","amount":130}]}]}],"totalFound":2,"searchId":"VO-40164625"}
@@ -0,0 +1 @@
1
+ {"responseId":5762113,"trackingId":"XI-HW-82431210","agencyReferenceNumber":"999","amendStatus":"Pending","note":"Your amendment request has been received. You will be contacted regarding amendment results by email or by message in our online system."}
@@ -0,0 +1 @@
1
+ {"responseId":5761559,"trackingId":"XI-HE-70838364","agencyReferenceNumber":"","bookingStatus":"Cancelled","note":"Booking has been cancelled successfully."}
@@ -0,0 +1 @@
1
+ {"responseId":4214740,"availableHotels":[{"processId":"HM-99621850","hotelCode":"UKNZDJ","availabilityStatus":"InstantConfirmation","totalPrice":437,"totalTax":0,"totalSalePrice":0,"currency":"EUR","boardType":"English Breakfast","rooms":[{"roomCategory":"Triple Standard","paxes":[{"paxType":"Adult","age":30},{"paxType":"Adult","age":30},{"paxType":"Child","age":"6"}],"totalRoomRate":219,"ratesPerNight":[{"date":"2012-09-20","amount":0},{"date":"2012-09-21","amount":73},{"date":"2012-09-22","amount":73},{"date":"2012-09-23","amount":73}]},{"roomCategory":"Triple Standard","paxes":[{"paxType":"Adult","age":30},{"paxType":"Adult","age":30},{"paxType":"Child","age":"8"}],"totalRoomRate":218,"ratesPerNight":[{"date":"2012-09-20","amount":0},{"date":"2012-09-21","amount":73},{"date":"2012-09-22","amount":73},{"date":"2012-09-23","amount":72}]}]},{"processId":"HC-56363390","hotelCode":"UKSU69","availabilityStatus":"InstantConfirmation","totalPrice":471,"totalTax":0,"totalSalePrice":0,"currency":"EUR","boardType":"English Breakfast","rooms":[{"roomCategory":"Triple Standard","paxes":[{"paxType":"Adult","age":30},{"paxType":"Adult","age":30},{"paxType":"Child","age":"6"}],"totalRoomRate":235,"ratesPerNight":[{"date":"2012-09-20","amount":84},{"date":"2012-09-21","amount":0},{"date":"2012-09-22","amount":84},{"date":"2012-09-23","amount":67}]},{"roomCategory":"Triple Standard","paxes":[{"paxType":"Adult","age":30},{"paxType":"Adult","age":30},{"paxType":"Child","age":"8"}],"totalRoomRate":236,"ratesPerNight":[{"date":"2012-09-20","amount":84},{"date":"2012-09-21","amount":0},{"date":"2012-09-22","amount":84},{"date":"2012-09-23","amount":68}]}]}],"totalFound":2,"searchId":"SZ-91588250"}
@@ -0,0 +1 @@
1
+ {"responseId":5762226,"currency":"0.00","totalDeposit":"0.00","totalBookingAmount":"0.00","currentBalance":"0.00"}
@@ -0,0 +1 @@
1
+ {"responseId":5761428,"trackingId":"XI-HE-70838364","agencyReferenceNumber":null,"hotelBookingInfo":{"bookingStatus":5,"confirmationNumber":"TEST;0000000","hotelCode":"US2HZR","checkIn":"2012-10-04","checkOut":"2012-10-11","totalPrice":"528","currency":"EUR","totalSalePrice":0,"boardType":"Room Only","rooms":[{"roomCategory":"Double 1 Double Bed","paxes":[{"paxType":"Adult","age":30,"title":"Mr","firstName":"John","lastName":"Doe"},{"paxType":"Adult","age":30,"title":"Mrs","firstName":"Amanda","lastName":"Doe"}],"totalRoomRate":528,"ratesPerNight":[{"date":"2012-10-04","amount":75},{"date":"2012-10-05","amount":75},{"date":"2012-10-06","amount":75},{"date":"2012-10-07","amount":75},{"date":"2012-10-08","amount":75},{"date":"2012-10-09","amount":75},{"date":"2012-10-10","amount":78}]}],"cancellationPolicy":[{"cancellationDay":7,"feeType":"Night","feeAmount":"1","currency":null,"remarks":null},{"cancellationDay":0,"feeType":"Night","feeAmount":"1","currency":null,"remarks":null}],"agencyReferenceNumber":null,"comments":null}}
@@ -0,0 +1 @@
1
+ {"responseId":5761637,"trackingId":"XI-HE-70838364","agencyReferenceNumber":"","cancellationPolicy":[{"cancellationDay":7,"feeType":"Night","feeAmount":"1","currency":null,"remarks":""},{"cancellationDay":0,"feeType":"Night","feeAmount":"1","currency":null,"remarks":""}]}
@@ -0,0 +1 @@
1
+ {"responseId":5756635,"trackingId":"XI-HE-70838364","hotelBookingInfo":{"bookingStatus":5,"confirmationNumber":"TEST;0000000","supplier":null,"hotelCode":"US2HZR","checkIn":"2012-10-04","checkOut":"2012-10-11","totalPrice":"528","currency":"EUR","totalSalePrice":0,"boardType":"Room Only","rooms":[{"roomCategory":"Double 1 Double Bed","paxes":[{"paxType":"Adult","age":30,"title":"Mr","firstName":"John","lastName":"Doe"},{"paxType":"Adult","age":30,"title":"Mrs","firstName":"Amanda","lastName":"Doe"}],"totalRoomRate":528,"ratesPerNight":[{"date":"2012-10-04","amount":75},{"date":"2012-10-05","amount":75},{"date":"2012-10-06","amount":75},{"date":"2012-10-07","amount":75},{"date":"2012-10-08","amount":75},{"date":"2012-10-09","amount":75},{"date":"2012-10-10","amount":78}]}],"cancellationPolicy":[{"cancellationDay":7,"feeType":"Amount","feeAmount":80,"currency":"EUR","remarks":"Guest must notify the Front Desk upon check-in if depature date has changed.Double rooms has one double bed."},{"cancellationDay":0,"feeType":"Amount","feeAmount":80,"currency":"EUR","remarks":""}],"agencyReferenceNumber":"","comments":""}}
File without changes
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::ApiMethod do
4
+ let(:api_method) { HotelsPro::Api::ApiMethod.new }
5
+
6
+ it "should raise exception on error response" do
7
+ response = stub(:error? => true, :error => HotelsPro::ErrorResponse.new("Error occured."))
8
+ request = stub(:perform => response)
9
+
10
+ api_method.stub(:request => request)
11
+
12
+ lambda { api_method.perform }.should raise_error(HotelsPro::ErrorResponse, "Error occured.")
13
+ end
14
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::ApiParams do
4
+ include ApiParamsHelper
5
+
6
+ before do
7
+ @object = mock_api_object({ :param_one => "value1", :param_two => "value2", :param_three => nil, :param_four => [], :param_five => {} })
8
+ end
9
+
10
+ describe ".to_api_params" do
11
+ it "should stringify and camelize attribute name" do
12
+ @object.api_param_name(:param_one).should == "paramOne"
13
+ end
14
+
15
+ it "should only include attributes with non-empty values" do
16
+ @object.to_api_params.should == { "paramOne" => "value1", "paramTwo" => "value2" }
17
+ end
18
+
19
+ it "should try to call to_api_params on value" do
20
+ child_object = mock_api_object({ :param_one => "value1" })
21
+
22
+ @object.api_param_value(child_object).should == { "paramOne" => "value1" }
23
+ end
24
+
25
+ it "should try to call to_api_params on all elements of value if value is Array" do
26
+ child_object1 = mock_api_object({ :param_one => "value1" })
27
+ child_object2 = mock_api_object({ :param_two => "value2" })
28
+
29
+ @object.api_param_value([child_object1, child_object2]).should == [{ "paramOne" => "value1" }, { "paramTwo" => "value2" }]
30
+ end
31
+
32
+ it "should stringify attribute value if it does not respond to :to_api_params" do
33
+ @object.api_param_value(:value).should == "value"
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Elements::PaxArray do
4
+ it "should return array of Pax elemements as api params" do
5
+ pax_arr = HotelsPro::Api::Elements::PaxArray.new
6
+ pax1 = HotelsPro::Api::Elements::Pax.new
7
+ pax2 = HotelsPro::Api::Elements::Pax.new
8
+
9
+ pax_arr.paxes << pax1
10
+ pax_arr.paxes << pax2
11
+
12
+ pax_arr.to_api_params.should == [pax1.to_api_params, pax2.to_api_params]
13
+ end
14
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::AllocateHotelCode do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::AllocateHotelCode.new(
8
+ :search_id => "VO-40164625",
9
+ :hotel_code => "US6X5G"
10
+ )
11
+
12
+ method.to_api_params.should == {
13
+ "searchId" => "VO-40164625",
14
+ "hotelCode" => "US6X5G"
15
+ }
16
+ end
17
+
18
+ it "should return result when performed" do
19
+ HotelsPro::Stubs.allocate_hotel_code.response(fixture("allocate_hotel_code"))
20
+
21
+ method = HotelsPro::Api::Methods::AllocateHotelCode.new(
22
+ :search_id => "VO-40164625",
23
+ :hotel_code => "US6X5G"
24
+ )
25
+
26
+ result = method.perform
27
+
28
+ result.should be_instance_of HotelsPro::Api::Methods::AllocateHotelCode::Result
29
+ result.response_id.should == 5752179
30
+ result.total_found.should == 2
31
+ result.search_id.should == "VO-40164625"
32
+ result.hotel_code.should == "US6X5G"
33
+ end
34
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::AmendHotelBooking do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::AmendHotelBooking.new(
8
+ :tracking_id => "XI-HW-82431210",
9
+ :check_in => Date.parse("2012-10-05"),
10
+ :check_out => Date.parse("2012-10-12"),
11
+ :lead_traveller_info => HotelsPro::Api::Elements::LeadTraveller.new(
12
+ :pax_info => HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult", :title => "Mr", :first_name => "John", :last_name => "Doe"),
13
+ :nationality => "US"
14
+ ),
15
+ :rooms => [
16
+ HotelsPro::Api::Elements::PaxArray.new(
17
+ :paxes => [
18
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult", :title => "Mr", :first_name => "John", :last_name => "Doe"),
19
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult", :age => 30, :title => "Mrs", :first_name => "Amanda", :last_name => "Doe")
20
+ ]
21
+ )
22
+ ],
23
+ :preferences => "nonSmoking",
24
+ :note => "I don't like french fries"
25
+ )
26
+
27
+ method.to_api_params.should == {
28
+ "trackingId" => "XI-HW-82431210",
29
+ "checkIn" => "2012-10-05",
30
+ "checkOut" => "2012-10-12",
31
+ "leadTravellerInfo" => {
32
+ "paxInfo" => {
33
+ "paxType" => "Adult",
34
+ "title" => "Mr",
35
+ "firstName" => "John",
36
+ "lastName" => "Doe"
37
+ },
38
+ "nationality" => "US"
39
+ },
40
+ "rooms" => [
41
+ [{ "paxType" => "Adult", "title" => "Mr", "firstName" => "John", "lastName" => "Doe" }, { "paxType" => "Adult", "age" => "30", "title" => "Mrs", "firstName" => "Amanda", "lastName" => "Doe" }]
42
+ ],
43
+ "preferences" => "nonSmoking",
44
+ "note" => "I don't like french fries"
45
+ }
46
+ end
47
+
48
+ it "should return result when performed" do
49
+ HotelsPro::Stubs.amend_hotel_booking.response(fixture('amend_hotel_booking'))
50
+
51
+ method = HotelsPro::Api::Methods::AmendHotelBooking.new(
52
+ :tracking_id => "XI-HW-82431210",
53
+ :check_in => Date.parse("2012-10-05"),
54
+ :check_out => Date.parse("2012-10-12"),
55
+ :lead_traveller_info => HotelsPro::Api::Elements::LeadTraveller.new(
56
+ :pax_info => HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult", :title => "Mr", :first_name => "John", :last_name => "Doe"),
57
+ :nationality => "US"
58
+ ),
59
+ :rooms => [
60
+ HotelsPro::Api::Elements::PaxArray.new(
61
+ :paxes => [
62
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult", :title => "Mr", :first_name => "John", :last_name => "Doe"),
63
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult", :age => 30, :title => "Mrs", :first_name => "Amanda", :last_name => "Doe")
64
+ ]
65
+ )
66
+ ],
67
+ :preferences => "nonSmoking",
68
+ :note => "I don't like french fries"
69
+ )
70
+
71
+ result = method.perform
72
+
73
+ result.should be_instance_of HotelsPro::Api::Methods::AmendHotelBooking::Result
74
+ result.response_id.should == 5762113
75
+ result.tracking_id.should == "XI-HW-82431210"
76
+ result.amend_status.should == "Pending"
77
+ result.note.should == "Your amendment request has been received. You will be contacted regarding amendment results by email or by message in our online system."
78
+ end
79
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::CancelHotelBooking do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::CancelHotelBooking.new(
8
+ :tracking_id => "XI-HE-70838364"
9
+ )
10
+
11
+ method.to_api_params.should == {
12
+ "trackingId" => "XI-HE-70838364"
13
+ }
14
+ end
15
+
16
+ it "should return result when performed" do
17
+ HotelsPro::Stubs.cancel_hotel_booking.response(fixture('cancel_hotel_booking'))
18
+
19
+ method = HotelsPro::Api::Methods::CancelHotelBooking.new(
20
+ :tracking_id => "XI-HE-70838364"
21
+ )
22
+
23
+ result = method.perform
24
+
25
+ result.should be_instance_of HotelsPro::Api::Methods::CancelHotelBooking::Result
26
+ result.response_id.should == 5761559
27
+ result.tracking_id.should == "XI-HE-70838364"
28
+ result.agency_reference_number.should be_empty
29
+ result.booking_status.should == "Cancelled"
30
+ result.note.should == "Booking has been cancelled successfully."
31
+ end
32
+ end
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::GetAvailableHotel do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::GetAvailableHotel.new(
8
+ :destination_id => "XXX",
9
+ :client_nationality => "US",
10
+ :currency => "EUR",
11
+ :check_in => Date.parse("2012-08-14"),
12
+ :check_out => Date.parse("2012-08-21"),
13
+ :rooms => [
14
+ HotelsPro::Api::Elements::PaxArray.new(
15
+ :paxes => [
16
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult"),
17
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult")
18
+ ]
19
+ ),
20
+ HotelsPro::Api::Elements::PaxArray.new(
21
+ :paxes => [
22
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult"),
23
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Child", :age => 10)
24
+ ]
25
+ )
26
+ ],
27
+ :filters => [
28
+ HotelsPro::Api::Elements::Filter.new(:filter_type => "hotelCode", :filter_value => "123"),
29
+ HotelsPro::Api::Elements::Filter.new(:filter_type => "limit", :filter_value => "10")
30
+ ]
31
+ )
32
+
33
+ method.to_api_params.should == {
34
+ "destinationId" => "XXX",
35
+ "clientNationality" => "US",
36
+ "currency" => "EUR",
37
+ "checkIn" => "2012-08-14",
38
+ "checkOut" => "2012-08-21",
39
+ "rooms" => [
40
+ [{ "paxType" => "Adult" }, { "paxType" => "Adult" }],
41
+ [{ "paxType" => "Adult" }, { "paxType" => "Child", "age" => "10" }]
42
+ ],
43
+ "filters" => [
44
+ { "filterType" => "hotelCode", "filterValue" => "123" },
45
+ { "filterType" => "limit", "filterValue" => "10" }
46
+ ],
47
+ "onRequest" => "true"
48
+ }
49
+ end
50
+
51
+ it "should return result when performed" do
52
+ HotelsPro::Stubs.get_available_hotel.response(fixture("get_available_hotel"))
53
+
54
+ method = HotelsPro::Api::Methods::GetAvailableHotel.new(
55
+ :destination_id => "XXX",
56
+ :client_nationality => "US",
57
+ :currency => "EUR",
58
+ :check_in => Date.parse("2012-08-14"),
59
+ :check_out => Date.parse("2012-08-21"),
60
+ :rooms => [
61
+ HotelsPro::Api::Elements::PaxArray.new(
62
+ :paxes => [
63
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult"),
64
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult")
65
+ ]
66
+ ),
67
+ HotelsPro::Api::Elements::PaxArray.new(
68
+ :paxes => [
69
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Adult"),
70
+ HotelsPro::Api::Elements::Pax.new(:pax_type => "Child", :age => 10)
71
+ ]
72
+ )
73
+ ]
74
+ )
75
+
76
+ result = method.perform
77
+
78
+ result.should be_instance_of HotelsPro::Api::Methods::GetAvailableHotel::Result
79
+ result.response_id.should == 4214740
80
+ result.total_found.should == 2
81
+ result.search_id.should == "SZ-91588250"
82
+ end
83
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::GetBalance do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::GetBalance.new()
8
+
9
+ method.to_api_params.should == {}
10
+ end
11
+
12
+ it "should return result when performed" do
13
+ HotelsPro::Stubs.get_balance.response(fixture('get_balance'))
14
+
15
+ method = HotelsPro::Api::Methods::GetBalance.new()
16
+
17
+ result = method.perform
18
+
19
+ result.should be_instance_of HotelsPro::Api::Methods::GetBalance::Result
20
+ result.response_id.should == 5762226
21
+ result.currency.should == "0.00"
22
+ result.total_deposit.should == 0
23
+ result.total_booking_amount.should == 0
24
+ result.current_balance.should == 0
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::GetHotelBookingStatus do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::GetHotelBookingStatus.new(
8
+ :tracking_id => "XI-HE-70838364"
9
+ )
10
+
11
+ method.to_api_params.should == {
12
+ "trackingId" => "XI-HE-70838364"
13
+ }
14
+ end
15
+
16
+ it "should return result when performed" do
17
+ HotelsPro::Stubs.get_hotel_booking_status.response(fixture('get_hotel_booking_status'))
18
+
19
+ method = HotelsPro::Api::Methods::GetHotelBookingStatus.new(
20
+ :tracking_id => "XI-HE-70838364"
21
+ )
22
+
23
+ result = method.perform
24
+
25
+ result.should be_instance_of HotelsPro::Api::Methods::GetHotelBookingStatus::Result
26
+ result.response_id.should == 5761428
27
+ result.tracking_id.should == "XI-HE-70838364"
28
+ result.hotel_booking_info.should be_instance_of HotelsPro::Api::Elements::BookInfo
29
+ result.hotel_booking_info.hotel_code.should == "US2HZR"
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe HotelsPro::Api::Methods::GetHotelCancellationPolicy do
4
+ include RequestHelper
5
+
6
+ it "should build correct api params hash" do
7
+ method = HotelsPro::Api::Methods::GetHotelCancellationPolicy.new(
8
+ :tracking_id => "XI-HE-70838364"
9
+ )
10
+
11
+ method.to_api_params.should == {
12
+ "trackingId" => "XI-HE-70838364"
13
+ }
14
+ end
15
+
16
+ it "should return result when performed" do
17
+ HotelsPro::Stubs.get_hotel_cancellation_policy.response(fixture('get_hotel_cancellation_policy'))
18
+
19
+ method = HotelsPro::Api::Methods::GetHotelCancellationPolicy.new(
20
+ :tracking_id => "XI-HE-70838364"
21
+ )
22
+
23
+ result = method.perform
24
+
25
+ result.should be_instance_of HotelsPro::Api::Methods::GetHotelCancellationPolicy::Result
26
+ result.response_id.should == 5761637
27
+ result.tracking_id.should == "XI-HE-70838364"
28
+ result.agency_reference_number.should be_empty
29
+ result.cancellation_policy.size.should == 2
30
+ end
31
+ end