quicktravel_client 3.6.1 → 4.0.0
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 +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +6 -3
- data/CHANGELOG.md +36 -3
- data/README.md +1 -1
- data/gemfiles/rails6.gemfile +8 -0
- data/lib/quick_travel.rb +4 -0
- data/lib/quick_travel/adapter.rb +19 -81
- data/lib/quick_travel/address.rb +4 -2
- data/lib/quick_travel/adjustment.rb +3 -2
- data/lib/quick_travel/background_check.rb +4 -2
- data/lib/quick_travel/bed_configuration.rb +3 -2
- data/lib/quick_travel/bed_requirement.rb +3 -2
- data/lib/quick_travel/booking.rb +11 -1
- data/lib/quick_travel/cache.rb +24 -5
- data/lib/quick_travel/checkout.rb +1 -1
- data/lib/quick_travel/client.rb +9 -0
- data/lib/quick_travel/contact.rb +4 -1
- data/lib/quick_travel/init_from_hash.rb +58 -1
- data/lib/quick_travel/package.rb +13 -0
- data/lib/quick_travel/passenger.rb +7 -2
- data/lib/quick_travel/passenger_price_break.rb +3 -2
- data/lib/quick_travel/passenger_split.rb +5 -0
- data/lib/quick_travel/passenger_type.rb +1 -1
- data/lib/quick_travel/product_configuration.rb +1 -1
- data/lib/quick_travel/products/base.rb +4 -4
- data/lib/quick_travel/property.rb +2 -1
- data/lib/quick_travel/property_facility.rb +3 -2
- data/lib/quick_travel/reservation.rb +5 -1
- data/lib/quick_travel/resource.rb +12 -3
- data/lib/quick_travel/resource_category.rb +5 -1
- data/lib/quick_travel/resource_group.rb +9 -0
- data/lib/quick_travel/room_facility.rb +3 -2
- data/lib/quick_travel/route.rb +1 -1
- data/lib/quick_travel/route_stop.rb +18 -2
- data/lib/quick_travel/service.rb +3 -2
- data/lib/quick_travel/version.rb +1 -1
- data/quicktravel_client.gemspec +6 -5
- data/spec/adapter_spec.rb +36 -5
- data/spec/booking_spec.rb +24 -6
- data/spec/clients_spec.rb +42 -0
- data/spec/discounts_spec.rb +21 -21
- data/spec/package_spec.rb +24 -0
- data/spec/passenger_type_spec.rb +1 -1
- data/spec/product_configuration_spec.rb +11 -0
- data/spec/product_spec.rb +5 -5
- data/spec/region_spec.rb +2 -2
- data/spec/reservation_spec.rb +22 -6
- data/spec/spec_helper.rb +6 -3
- data/spec/support/cassettes/accommodation_reserve.yml +119 -53
- data/spec/support/cassettes/basic_product_scheduled_trips.yml +22 -34
- data/spec/support/cassettes/basic_product_scheduled_trips_multi_sector.yml +22 -28
- data/spec/support/cassettes/basic_product_scheduled_trips_unbookable.yml +12 -12
- data/spec/support/cassettes/booking_activate.yml +31 -30
- data/spec/support/cassettes/booking_cancel.yml +31 -30
- data/spec/support/cassettes/booking_create.yml +17 -16
- data/spec/support/cassettes/booking_create_accommodation.yml +64 -0
- data/spec/support/cassettes/booking_documents.yml +12 -12
- data/spec/support/cassettes/booking_non_existant.yml +11 -11
- data/spec/support/cassettes/booking_price_changes.yml +22 -18
- data/spec/support/cassettes/booking_show.yml +16 -15
- data/spec/support/cassettes/booking_update.yml +31 -29
- data/spec/support/cassettes/booking_with_comments.yml +119 -0
- data/spec/support/cassettes/booking_with_documents.yml +41 -38
- data/spec/support/cassettes/booking_with_nested_attributes.yml +70 -64
- data/spec/support/cassettes/booking_with_price_changes.yml +30 -27
- data/spec/support/cassettes/checkout_client_token.yml +14 -14
- data/spec/support/cassettes/client_templates.yml +120 -0
- data/spec/support/cassettes/countries.yml +18 -94
- data/spec/support/cassettes/country_all.yml +18 -94
- data/spec/support/cassettes/create_reservation_fail.yml +11 -11
- data/spec/support/cassettes/create_reservation_with_booking.yml +18 -17
- data/spec/support/cassettes/locations.yml +15 -15
- data/spec/support/cassettes/opal_modern_pay_failed_booking.yml +64 -0
- data/spec/support/cassettes/opal_modern_pay_failed_create.yml +61 -0
- data/spec/support/cassettes/opal_modern_pay_failed_update.yml +59 -0
- data/spec/support/cassettes/opal_modern_pay_successful_booking.yml +64 -0
- data/spec/support/cassettes/opal_modern_pay_successful_response.yml +61 -0
- data/spec/support/cassettes/opal_modern_pay_successful_update_response.yml +61 -0
- data/spec/support/cassettes/opal_pay.yml +61 -0
- data/spec/support/cassettes/opal_pay_booking.yml +64 -0
- data/spec/support/cassettes/package_show.yml +83 -0
- data/spec/support/cassettes/package_show_product_type.yml +80 -0
- data/spec/support/cassettes/passenger_all.yml +14 -14
- data/spec/support/cassettes/payment_info.yml +12 -12
- data/spec/support/cassettes/price_quote.yml +23 -23
- data/spec/support/cassettes/product_date_range_bookability.yml +35 -49
- data/spec/support/cassettes/product_show.yml +16 -18
- data/spec/support/cassettes/product_show_as_agent.yml +17 -23
- data/spec/support/cassettes/product_type_all.yml +19 -15
- data/spec/support/cassettes/product_type_resource_categories.yml +12 -12
- data/spec/support/cassettes/product_type_resource_categories_tickets.yml +15 -15
- data/spec/support/cassettes/product_type_routes.yml +17 -17
- data/spec/support/cassettes/property.yml +19 -19
- data/spec/support/cassettes/property_types.yml +15 -15
- data/spec/support/cassettes/region_show.yml +14 -14
- data/spec/support/cassettes/reservation_resource.yml +64 -0
- data/spec/support/cassettes/reservation_with_extra_picks.yml +63 -63
- data/spec/support/cassettes/resource_category_all.yml +15 -15
- data/spec/support/cassettes/resource_category_all_for_product_type_8.yml +14 -14
- data/spec/support/cassettes/resource_fare_bases.yml +21 -24
- data/spec/support/cassettes/resource_show.yml +18 -18
- data/spec/support/cassettes/resource_with_price.yml +19 -19
- data/spec/support/cassettes/settings_basic.yml +12 -12
- data/spec/support/cassettes/tenant_switcher.yml +37 -29
- data/spec/support/cassettes/wrong_url.yml +28 -47
- data/spec/support/coverage_loader.rb +1 -1
- metadata +69 -27
- data/gemfiles/rails4.gemfile +0 -9
data/lib/quick_travel/client.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'quick_travel/adapter'
|
4
|
+
require 'quick_travel/init_from_hash'
|
2
5
|
|
3
6
|
module QuickTravel
|
4
7
|
class Client < Adapter
|
8
|
+
include QuickTravel::InitFromHash
|
9
|
+
self.api_base = '/api/clients'
|
10
|
+
|
11
|
+
def templates
|
12
|
+
get_and_validate("/api/clients/#{id}/templates")
|
13
|
+
end
|
5
14
|
end
|
6
15
|
end
|
data/lib/quick_travel/contact.rb
CHANGED
@@ -3,7 +3,8 @@ module QuickTravel
|
|
3
3
|
def initialize(hash = {})
|
4
4
|
return nil if hash.blank?
|
5
5
|
|
6
|
-
hash.
|
6
|
+
define_readers(hash.keys)
|
7
|
+
Parser.new(hash).parsed_attributes.each do |attr, val|
|
7
8
|
# set datamember of the object using hash key and value
|
8
9
|
if respond_to?("#{attr}=")
|
9
10
|
send("#{attr}=", val)
|
@@ -12,5 +13,61 @@ module QuickTravel
|
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
16
|
+
|
17
|
+
def define_readers(keys)
|
18
|
+
keys.each do |key|
|
19
|
+
next if respond_to?(key)
|
20
|
+
define_singleton_method(key) { instance_variable_get("@#{key}") }
|
21
|
+
if key.to_s.ends_with? '_cents'
|
22
|
+
name = key.to_s.gsub(/_in_cents$/, '')
|
23
|
+
define_singleton_method(name) {
|
24
|
+
cents = instance_variable_get("@#{key}")
|
25
|
+
return nil unless cents
|
26
|
+
Money.new(cents)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_hash
|
33
|
+
instance_values
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Parser
|
38
|
+
def initialize(attributes)
|
39
|
+
@attributes = attributes
|
40
|
+
end
|
41
|
+
|
42
|
+
def attributes
|
43
|
+
@attributes ||= {}
|
44
|
+
end
|
45
|
+
|
46
|
+
def parsed_attributes
|
47
|
+
@parsed_attributes ||= parse_attributes
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def parse_attributes
|
53
|
+
attributes.map.with_object({}) do |(attribute, value), hash|
|
54
|
+
hash[attribute] = parse(attribute, value)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def parse(attribute, value)
|
59
|
+
return nil if value.nil?
|
60
|
+
return convert(value, :to_date) if attribute.to_s.ends_with?('_date')
|
61
|
+
return convert(value, :to_date) if attribute.to_s.ends_with?('_on')
|
62
|
+
# to_datetime as it converts to app time zone, to_time converts to system time zone
|
63
|
+
return convert(value, :to_datetime) if attribute.to_s.ends_with?('_time')
|
64
|
+
return convert(value, :to_datetime) if attribute.to_s.ends_with?('_at')
|
65
|
+
value
|
66
|
+
end
|
67
|
+
|
68
|
+
def convert(value, conversion_method)
|
69
|
+
convertable_value = value.is_a?(Hash) ? value['_value'] : value
|
70
|
+
convertable_value.try(conversion_method) || convertable_value
|
71
|
+
end
|
15
72
|
end
|
16
73
|
end
|
@@ -1,6 +1,11 @@
|
|
1
|
-
require 'quick_travel/
|
1
|
+
require 'quick_travel/init_from_hash'
|
2
2
|
|
3
3
|
module QuickTravel
|
4
|
-
class Passenger
|
4
|
+
class Passenger
|
5
|
+
include QuickTravel::InitFromHash
|
6
|
+
|
7
|
+
def passenger_type
|
8
|
+
QuickTravel::PassengerType.find(@passenger_type_id)
|
9
|
+
end
|
5
10
|
end
|
6
11
|
end
|
@@ -13,7 +13,7 @@ module QuickTravel
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.pluralize(count, singular, plural = nil)
|
16
|
-
"#{count || 0} " + ((count == 1
|
16
|
+
"#{count || 0} " + ((count == 1) ? singular : (plural || singular.pluralize))
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -7,13 +7,13 @@ module QuickTravel
|
|
7
7
|
bookable || exception_type == 'inventory'
|
8
8
|
end
|
9
9
|
|
10
|
-
def self.find(search_params = {})
|
11
|
-
find_for_type(@reservation_for_type, search_params)
|
10
|
+
def self.find(search_params = {}, opts = {})
|
11
|
+
find_for_type(@reservation_for_type, search_params, opts)
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.find_for_type(type, search_params = {})
|
14
|
+
def self.find_for_type(type, search_params = {}, opts = {})
|
15
15
|
url = "/reservation_for/#{type}/find_services_for.json"
|
16
|
-
product_maps = post_and_validate(url, search_params)
|
16
|
+
product_maps = post_and_validate(url, search_params, opts)
|
17
17
|
product_maps.map { |product_map| new(product_map) }
|
18
18
|
end
|
19
19
|
end
|
@@ -3,6 +3,7 @@ require 'quick_travel/property_facility'
|
|
3
3
|
|
4
4
|
module QuickTravel
|
5
5
|
class Property < Adapter
|
6
|
+
self.api_base = '/api/properties'
|
6
7
|
attr_reader :error
|
7
8
|
|
8
9
|
def accommodations=(hash_array)
|
@@ -23,7 +24,7 @@ module QuickTravel
|
|
23
24
|
|
24
25
|
def self.load_with_pricing(id, options)
|
25
26
|
# Find property 'standard' way -- finds price for whole duration
|
26
|
-
fail ArgumentError.new('Must Specify valid property id') if id.blank? || id.
|
27
|
+
fail ArgumentError.new('Must Specify valid property id') if id.blank? || !id.is_a?(Integer)
|
27
28
|
property = find_all!("/api/properties/#{id}.json", options).first
|
28
29
|
first_travel_date = options.fetch(:product).fetch(:first_travel_date)
|
29
30
|
property.accommodations.each do |accommodation|
|
@@ -30,6 +30,10 @@ module QuickTravel
|
|
30
30
|
end_time.to_time.on(last_travel_date) if end_time
|
31
31
|
end
|
32
32
|
|
33
|
+
def passenger_splits
|
34
|
+
@_passenger_splits ||= @passenger_splits.map{ |split| PassengerSplit.new(split) }
|
35
|
+
end
|
36
|
+
|
33
37
|
def passengers_count_string(booking)
|
34
38
|
passengers_count(booking).join(', ')
|
35
39
|
end
|
@@ -38,7 +42,7 @@ module QuickTravel
|
|
38
42
|
passenger_type_count = {}
|
39
43
|
if passenger_splits.present?
|
40
44
|
passenger_splits.each do |p|
|
41
|
-
passenger = booking.find_passenger_by_id(p
|
45
|
+
passenger = booking.find_passenger_by_id(p.consumer_id)
|
42
46
|
|
43
47
|
if passenger.present?
|
44
48
|
passenger_type_count[passenger.passenger_type_id] ||= 0
|
@@ -5,21 +5,30 @@ require 'quick_travel/product_type'
|
|
5
5
|
|
6
6
|
module QuickTravel
|
7
7
|
class Resource < Adapter
|
8
|
-
self.api_base = '/resources'
|
8
|
+
self.api_base = '/api/resources'
|
9
9
|
|
10
10
|
def sub_resources
|
11
|
-
Resource.find_all!('/resources.json', parent_resource_id: @id)
|
11
|
+
Resource.find_all!('/api/resources.json', parent_resource_id: @id)
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.all_with_price(opts)
|
15
15
|
cache_key = GenerateCacheKey.new(name, opts).call
|
16
|
-
find_all!("/api/resources/index_with_price.json", opts.merge(
|
16
|
+
find_all!("/api/resources/index_with_price.json", opts.merge(cache_key: cache_key))
|
17
17
|
end
|
18
18
|
|
19
19
|
def product_type
|
20
20
|
QuickTravel::ProductType.find(product_type_id)
|
21
21
|
end
|
22
22
|
|
23
|
+
def locations
|
24
|
+
location_ids.map{ |id| Location.find(id) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def category
|
28
|
+
return nil if @category.nil?
|
29
|
+
@_category ||= QuickTravel::ResourceCategory.new(@category)
|
30
|
+
end
|
31
|
+
|
23
32
|
def bed_requirements
|
24
33
|
@_bed_requirements ||= Array.wrap(@bed_requirements).map do |bed_requirement|
|
25
34
|
BedRequirement.new(bed_requirement)
|
data/lib/quick_travel/route.rb
CHANGED
@@ -17,7 +17,7 @@ module QuickTravel
|
|
17
17
|
# All routes for a given product type
|
18
18
|
def self.all(product_type_id)
|
19
19
|
find_all!("/product_types/#{product_type_id}/routes.json",
|
20
|
-
|
20
|
+
cache_key: "QuickTravel::Route.all-#{product_type_id}-attrs")
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.find(routes_list, route_id)
|
@@ -1,6 +1,22 @@
|
|
1
|
-
require 'quick_travel/
|
1
|
+
require 'quick_travel/init_from_hash'
|
2
2
|
|
3
3
|
module QuickTravel
|
4
|
-
class RouteStop
|
4
|
+
class RouteStop
|
5
|
+
include QuickTravel::InitFromHash
|
6
|
+
|
7
|
+
def stop
|
8
|
+
Stop.new({
|
9
|
+
id: stop_id,
|
10
|
+
name: name,
|
11
|
+
code: code,
|
12
|
+
address: address,
|
13
|
+
longitude: longitude,
|
14
|
+
latitude: latitude
|
15
|
+
})
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Stop
|
20
|
+
include QuickTravel::InitFromHash
|
5
21
|
end
|
6
22
|
end
|
data/lib/quick_travel/service.rb
CHANGED
data/lib/quick_travel/version.rb
CHANGED
data/quicktravel_client.gemspec
CHANGED
@@ -16,13 +16,14 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
|
-
spec.add_dependency 'httparty'
|
20
|
-
spec.add_dependency '
|
21
|
-
spec.add_dependency 'activesupport', '>= 2.0.0'
|
19
|
+
spec.add_dependency 'httparty'
|
20
|
+
spec.add_dependency 'activesupport', '>= 5.0.0'
|
22
21
|
spec.add_dependency 'facets'
|
23
|
-
spec.add_dependency 'money', '>=
|
22
|
+
spec.add_dependency 'money', '>= 6.0'
|
23
|
+
spec.add_dependency 'money_extensions', '>= 1.0'
|
24
|
+
spec.add_dependency 'will_paginate'
|
24
25
|
|
25
|
-
spec.add_development_dependency 'bundler', '~>
|
26
|
+
spec.add_development_dependency 'bundler', '~> 2'
|
26
27
|
spec.add_development_dependency 'rake'
|
27
28
|
spec.add_development_dependency 'rspec'
|
28
29
|
spec.add_development_dependency 'rspec-its'
|
data/spec/adapter_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'quick_travel/adapter'
|
3
3
|
|
4
4
|
describe QuickTravel::Adapter do
|
5
|
-
let(:response) { double code: 200, parsed_response: parsed_response }
|
5
|
+
let(:response) { double code: 200, parsed_response: parsed_response, headers: {} }
|
6
6
|
let(:parsed_response) { { test: true } }
|
7
7
|
|
8
8
|
before do
|
@@ -26,8 +26,7 @@ describe QuickTravel::Adapter do
|
|
26
26
|
let(:expected_body) {
|
27
27
|
{
|
28
28
|
test: true,
|
29
|
-
sub_hash: { id: 42 }
|
30
|
-
access_key: an_instance_of(String)
|
29
|
+
sub_hash: { id: 42 }
|
31
30
|
}
|
32
31
|
}
|
33
32
|
|
@@ -37,7 +36,7 @@ describe QuickTravel::Adapter do
|
|
37
36
|
end
|
38
37
|
|
39
38
|
context 'when response non standard' do
|
40
|
-
let(:url) { '
|
39
|
+
let(:url) { 'https://httpstat.us/418' }
|
41
40
|
|
42
41
|
let(:adapter_response) {
|
43
42
|
VCR.use_cassette 'wrong_url' do
|
@@ -48,8 +47,40 @@ describe QuickTravel::Adapter do
|
|
48
47
|
specify do
|
49
48
|
expect { adapter_response }.to raise_error(
|
50
49
|
QuickTravel::AdapterError,
|
51
|
-
/
|
50
|
+
/418 I'm a teapot/
|
52
51
|
)
|
53
52
|
end
|
54
53
|
end
|
54
|
+
|
55
|
+
context 'when cache options present' do
|
56
|
+
subject(:all) do
|
57
|
+
QuickTravel::Adapter.call_and_validate(:get, 'some_path', {}, { cache_key: 'test_key', cache_options: { expires_in: 3.minutes } })
|
58
|
+
end
|
59
|
+
let(:api) { double }
|
60
|
+
|
61
|
+
before do
|
62
|
+
QuickTravel::Cache.cache_store.clear
|
63
|
+
stub_const('QuickTravel::Api', api)
|
64
|
+
allow(api).to receive(:call_and_validate) { [{id: 1}, {id: 2}] }
|
65
|
+
all
|
66
|
+
end
|
67
|
+
|
68
|
+
specify { expect(api).to have_received(:call_and_validate).once }
|
69
|
+
|
70
|
+
context 'when called again' do
|
71
|
+
before do
|
72
|
+
QuickTravel::Adapter.call_and_validate(:get, 'some_path', {}, { cache_key: 'test_key', cache_options: { expires_in: 3.minutes } })
|
73
|
+
end
|
74
|
+
|
75
|
+
specify { expect(api).to have_received(:call_and_validate).once } # not called again
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'when called with different key' do
|
79
|
+
before do
|
80
|
+
QuickTravel::Adapter.call_and_validate(:get, 'some_path', {}, { cache_key: 'test_key1', cache_options: { expires_in: 3.minutes } })
|
81
|
+
end
|
82
|
+
|
83
|
+
specify { expect(api).to have_received(:call_and_validate).twice }
|
84
|
+
end
|
85
|
+
end
|
55
86
|
end
|
data/spec/booking_spec.rb
CHANGED
@@ -65,7 +65,7 @@ describe QuickTravel::Booking do
|
|
65
65
|
VCR.use_cassette('booking_show') do
|
66
66
|
b = QuickTravel::Booking.find(@booking.id)
|
67
67
|
expect(b.payment_types).to be_an_instance_of Array
|
68
|
-
expect(b.payment_types.size).to eq
|
68
|
+
expect(b.payment_types.size).to eq 4
|
69
69
|
expect(b.payment_types.first).to be_an_instance_of QuickTravel::PaymentType
|
70
70
|
expect(b.payments).to be_an_instance_of Array
|
71
71
|
expect(b.payments.size).to eq 0
|
@@ -144,10 +144,12 @@ end
|
|
144
144
|
|
145
145
|
describe QuickTravel::Booking, 'when booking accommodation' do
|
146
146
|
let(:booking) {
|
147
|
-
VCR.use_cassette('
|
148
|
-
QuickTravel
|
149
|
-
|
147
|
+
VCR.use_cassette('booking_create_accommodation') do
|
148
|
+
QuickTravel.config.version = 4
|
149
|
+
QuickTravel::Booking.create
|
150
|
+
end
|
150
151
|
}
|
152
|
+
|
151
153
|
let(:reservation) {
|
152
154
|
VCR.use_cassette('accommodation_reserve') do
|
153
155
|
booking.accommodation_reserve(
|
@@ -157,14 +159,20 @@ describe QuickTravel::Booking, 'when booking accommodation' do
|
|
157
159
|
first_travel_date: '01/03/2016',
|
158
160
|
last_travel_date: '02/03/2016'
|
159
161
|
)
|
160
|
-
booking.reservations.detect { |reservation| reservation.resource.name == 'Executive Room' }
|
162
|
+
QuickTravel::Booking.find(booking.id).reservations.detect { |reservation| reservation.resource.name == 'Executive Room' }
|
163
|
+
end
|
164
|
+
}
|
165
|
+
|
166
|
+
let(:resource) {
|
167
|
+
VCR.use_cassette('reservation_resource') do
|
168
|
+
QuickTravel::Resource.find(reservation.resource_id)
|
161
169
|
end
|
162
170
|
}
|
163
171
|
|
164
172
|
it 'should create acommodation reservation' do
|
165
173
|
expect(reservation.first_travel_date).to eq '2016-03-01'.to_date
|
166
174
|
expect(reservation.last_travel_date).to eq '2016-03-02'.to_date
|
167
|
-
expect(
|
175
|
+
expect(resource.name).to eq 'Executive Room'
|
168
176
|
expect(reservation.passenger_ids).to eq booking.passenger_ids
|
169
177
|
end
|
170
178
|
end
|
@@ -199,3 +207,13 @@ describe QuickTravel::Booking, "when booking doesn't exist" do
|
|
199
207
|
end
|
200
208
|
end
|
201
209
|
end
|
210
|
+
|
211
|
+
describe QuickTravel::Booking, "#customer_comments" do
|
212
|
+
let(:booking) { QuickTravel::Booking.find(333536) }
|
213
|
+
|
214
|
+
it 'should return customer comments' do
|
215
|
+
VCR.use_cassette('booking_with_comments') do
|
216
|
+
expect(booking.customer_comments).to eq 'I hate this'
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|