From 0804804e705d449884af6c2204a8bba1d6c3bec0 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 11:44:04 -0800 Subject: [PATCH 01/32] Pseudocode for class booking --- Rakefile | 10 ++++++++++ lib/booking.rb | 26 ++++++++++++++++++++++++++ specs/spec_helper.rb | 16 ++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 Rakefile create mode 100644 lib/booking.rb create mode 100644 specs/spec_helper.rb diff --git a/Rakefile b/Rakefile new file mode 100644 index 000000000..3391136e7 --- /dev/null +++ b/Rakefile @@ -0,0 +1,10 @@ +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.libs = ["lib"] + t.warning = true + t.test_files = FileList['specs/*_spec.rb'] +end + +task default: :test + diff --git a/lib/booking.rb b/lib/booking.rb new file mode 100644 index 000000000..9871a8851 --- /dev/null +++ b/lib/booking.rb @@ -0,0 +1,26 @@ +module Hotel + class Booking # This class will control reservations + + # Constructor + # reservations_list = [] + + #Method to add a reservation + # def add_reservation + # will need to check first if the room is available according to the date range + # if it is available the new reservation will be done and pushed into the + # array @reservations_list + # return reservation_new + # if no available roooms raise and ArgumentError saying that there is no rooms + # available for that date range. + + # Method to return the list of the reservations per day + # def reservations_per_day + # will create an array of the reservations of the date specified + # reservations_ofthat_day = [] + # will need to iterate through the @reservations_list and see + # if a reservation is done for the specific date + # if it is, then the reservation will be pushed into the array name reservations_ofthat_day + # return reservations_ofthat_day + + end #class +end #module diff --git a/specs/spec_helper.rb b/specs/spec_helper.rb new file mode 100644 index 000000000..209b0b98d --- /dev/null +++ b/specs/spec_helper.rb @@ -0,0 +1,16 @@ +require 'simplecov' +SimpleCov.start + +require 'time' +require 'minitest' +require 'minitest/autorun' +require 'minitest/reporters' +# Add simplecov + +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new + +# Require_relative your lib files here! +require_relative '../lib/booking' +require_relative '../lib/dates' +require_relative '../lib/reservation' +require_relative '../lib/blockrooms' From 94645f73539c408be4db2b04860829928314b159 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 12:05:41 -0800 Subject: [PATCH 02/32] Tests created for booking class however I expect more tests. --- specs/booking_specs.rb | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 specs/booking_specs.rb diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb new file mode 100644 index 000000000..d289c6078 --- /dev/null +++ b/specs/booking_specs.rb @@ -0,0 +1,33 @@ +require_relative 'spec_helper' +require 'pry' + +describe 'Booking class' do + before do + @booking = Hotel::Booking.new + end + + describe 'Initialize' do + it "Can be create" do + @booking.must_be_instance_of Hotel::Booking + end + + it "Create list of Reservation" do + @booking.list_reservations.must_equal [] + end + end + + describe "add_reservation method " do + before do + @start_date = Date.new(2018, 8, 20) + @end_date = Date.new(2018, 8, 27) + end + + it "Creates an array of reservation" do + @booking.add_reservation(@start_date,@end_date).must_be_instance_of Array + end + + it "Each element in the array is a Reservation" do + @booking.add_reservation(@start_date,@end_date)[0].must_be_instance_of Hotel::Reservation + end + end +end From e902fdf45e72b6e2556bf37335edad0bc905ea50 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 12:15:45 -0800 Subject: [PATCH 03/32] Tests created for helper method reservations per day in booking. --- specs/booking_specs.rb | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index d289c6078..78ee7c33b 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -7,7 +7,7 @@ end describe 'Initialize' do - it "Can be create" do + it "Can be created" do @booking.must_be_instance_of Hotel::Booking end @@ -30,4 +30,36 @@ @booking.add_reservation(@start_date,@end_date)[0].must_be_instance_of Hotel::Reservation end end + + describe "reservations_per_day method" do + before do + @date1 = Date.new(2018,02,20) + @date2 = Date.new(2018,03,23) + @date3 = Date.new(2018,03,31) + @date4 = Date.new(2018,04,04) + @date5 = Date.new(2018,04,29) + @booking = Hotel::Booking.new + @booking.add_reservation(@date1, @date3) + @booking.add_reservation(@date1, @date4) + + + end + + it 'Returns an array of reservations instances' do + @booking.reservations_per_day(@date1)[0].must_be_instance_of Hotel::Reservation + end + + it 'Returns an array of reservations of the specific date ' do + @booking.reservations_per_day(@date1).must_be_instance_of Array + end + + it 'Returns empty array if that day there is no reservations' do + @booking.reservations_per_day(@date2).must_equal [] + end + + it 'Returns all the reservations per day, when is not empty' do + @booking.reservations_per_day(@date1).length.must_equal 2 + end + + end end From 5386cb8a8a729e1befb0379664ee163af2d9a788 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 14:31:18 -0800 Subject: [PATCH 04/32] Rakefile and specs/spec_helper created. --- Rakefile | 3 +-- specs/spec_helper.rb | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Rakefile b/Rakefile index 3391136e7..5b3221435 100644 --- a/Rakefile +++ b/Rakefile @@ -3,8 +3,7 @@ require 'rake/testtask' Rake::TestTask.new do |t| t.libs = ["lib"] t.warning = true - t.test_files = FileList['specs/*_spec.rb'] + t.test_files = FileList['specs/*_specs.rb'] end task default: :test - diff --git a/specs/spec_helper.rb b/specs/spec_helper.rb index 209b0b98d..cfc4b5923 100644 --- a/specs/spec_helper.rb +++ b/specs/spec_helper.rb @@ -5,12 +5,12 @@ require 'minitest' require 'minitest/autorun' require 'minitest/reporters' -# Add simplecov -Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new # Require_relative your lib files here! require_relative '../lib/booking' require_relative '../lib/dates' require_relative '../lib/reservation' require_relative '../lib/blockrooms' +require_relative '../lib/rooms' From 300d7470fd5f0a5ceb7b3a230747dc8c8fc814b3 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 14:32:47 -0800 Subject: [PATCH 05/32] Implementation of class Booking with methods -add reservation- and -reservations per day-. --- lib/booking.rb | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/booking.rb b/lib/booking.rb index 9871a8851..65d86bae9 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -1,26 +1,26 @@ module Hotel class Booking # This class will control reservations - # Constructor - # reservations_list = [] + attr_reader :reservations_list - #Method to add a reservation - # def add_reservation - # will need to check first if the room is available according to the date range - # if it is available the new reservation will be done and pushed into the - # array @reservations_list - # return reservation_new - # if no available roooms raise and ArgumentError saying that there is no rooms - # available for that date range. + def initialize + @reservations_list = [] + end - # Method to return the list of the reservations per day - # def reservations_per_day - # will create an array of the reservations of the date specified - # reservations_ofthat_day = [] - # will need to iterate through the @reservations_list and see - # if a reservation is done for the specific date - # if it is, then the reservation will be pushed into the array name reservations_ofthat_day - # return reservations_ofthat_day + def add_reservation(checkin, checkout) + reservation_new = Hotel::Reservation.new(checkin, checkout) + @reservations_list << reservation_new + end + + def reservations_per_day(date) + reservations_list_per_day = [] + @reservations_list.each do |reservation| + if reservation.range_of_dates.include?(date) + reservations_list_per_day << reservation + end + end + return reservations_list_per_day + end end #class end #module From b9bb52b629c4942d5f0eca83b2677ccdc08f8586 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 14:53:32 -0800 Subject: [PATCH 06/32] Tests for class Reservation created. --- specs/reservation_specs.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 specs/reservation_specs.rb diff --git a/specs/reservation_specs.rb b/specs/reservation_specs.rb new file mode 100644 index 000000000..b6169e30f --- /dev/null +++ b/specs/reservation_specs.rb @@ -0,0 +1,25 @@ +require_relative 'spec_helper' +require 'pry' + +describe 'Reservation class' do + before do + @start_date = Date.new(2018, 8, 20) + @end_date = Date.new(2018, 8, 27) + @reservation_new = Hotel::Reservation.new(@start_date, @end_date) + end + + describe 'Initialize' do + it "Can be created" do + @reservation_new.must_be_instance_of Hotel::Reservation + end + + end + + describe "cost_reservation method " do + + it "Returns the cost of a reservation" do + @reservation_new.cost_reservation.must_equal 1400 + end + + end +end From 5daf160983535e22e5088a221884893fd56eeceb Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Tue, 6 Mar 2018 14:55:03 -0800 Subject: [PATCH 07/32] Implementation of class Reservation with constructor and cost_reservation methods created. All tests passing. --- lib/reservation.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/reservation.rb diff --git a/lib/reservation.rb b/lib/reservation.rb new file mode 100644 index 000000000..065bde5d9 --- /dev/null +++ b/lib/reservation.rb @@ -0,0 +1,17 @@ +module Hotel + + class Reservation #This class will calculate the total cost for a given reservation. + attr_reader :checkin, :checkout, :days_range + + PRICE_PER_NIGHT = 200 + def initialize(checkin, checkout) + @price_per_night = PRICE_PER_NIGHT + @range_of_dates = Hotel::RangeDates.new(checkin, checkout) + end + + def cost_reservation + @price_per_night * @range_of_dates.stay_length + end + + end #class +end #module From cdbdcca8c547dfc03f4c5849b5f70ef7796c6e69 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Wed, 7 Mar 2018 22:20:18 -0800 Subject: [PATCH 08/32] Tests and class DatesRange created. Still need to implement a method to solve overlapping. --- lib/dates.rb | 30 +++++++++++++ specs/dates_specs.rb | 101 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 lib/dates.rb create mode 100644 specs/dates_specs.rb diff --git a/lib/dates.rb b/lib/dates.rb new file mode 100644 index 000000000..b18d8d442 --- /dev/null +++ b/lib/dates.rb @@ -0,0 +1,30 @@ +module Hotel + + class DatesRange #This class manages the date range + + attr_reader :checkin, :checkout + + def initialize(start_date, end_date) + @checkin = start_date + @checkout = end_date + date_validation + end + + def date_validation + return true if @checkin < @checkout + raise StandardError + end + + def amount_days + (@checkout - @checkin).to_i + end + + def include?(date) + return true if @checkin <= date && @checkout > date + return false + end + + # need to make a method to deal with overlapping + + end +end diff --git a/specs/dates_specs.rb b/specs/dates_specs.rb new file mode 100644 index 000000000..8b80628ab --- /dev/null +++ b/specs/dates_specs.rb @@ -0,0 +1,101 @@ +require_relative 'spec_helper' + +describe 'DatesRange class' do + describe 'initialize' do + before do + @start_date = Date.new(2018,6,4) + @end_date = Date.new(2018,6,7) + end + + it "responds to checkin" do + date_new = Hotel::DatesRange.new(@start_date ,@end_date) + date_new.checkin.must_equal @start_date + end + + it "responds to checkout" do + date_new = Hotel::DatesRange.new(@start_date ,@end_date) + date_new.checkout.must_equal @end_date + end + + it "can be initialize if the dates are valid" do + Hotel::DatesRange.new( @start_date, @end_date).must_be_instance_of Hotel::DatesRange + end + + it "Raises an error if checkin and checkout are the same day" do + proc{Hotel::DatesRange.new(@start_date, @start_date)}.must_raise StandardError + end + + it "Raises error if checkin is after checkout" do + proc {Hotel::DatesRange.new(@end_date, @start_date)}.must_raise StandardError + end + + it "Raises error if checkout is before checkin" do + proc {Hotel::DatesRange.new(@end_date, @start_date)}.must_raise StandardError + end + + end # describe initialize + + + describe "amount_days method" do + before do + @start_date = Date.new(2018,2,5) + @end_date = Date.new(2018,2,7) + end + + it "Returns an integer as result of the amount of days" do + date_new = Hotel::DatesRange.new(@start_date, @end_date) + date_new.amount_days.must_be_kind_of Integer + end + + it "Returns the correct amount of days" do + date_new = Hotel::DatesRange.new(@start_date, @end_date) + date_new.amount_days.must_equal 2 + end + + end # describe amount_days method + + describe 'include? method' do + before do + @checkin = Date.new(2018,2,5) + @checkout = Date.new(2018,2,8) + @datenewrange = Hotel::DatesRange.new(@checkin, @checkout) + end + + it 'returns true if the date is included' do + date = Date.new(2018,2,6) + @datenewrange.include?(date).must_equal true + end + + it 'returns false for a date that is out of the range' do + date = Date.new(2018,2,9) + @datenewrange.include?(date).must_equal false + end + + it 'returns false if the date is the checkout date' do + @datenewrange.include?(@checkout).must_equal false + end + + it 'returns true if the date is the checkin date' do + @datenewrange.include?(@checkin).must_equal true + end + + end + + describe 'overlap?' do + before do + end + + it "returns true if the checkin is the same day as the checkout day" do + + end + + it "returns false if the date range don't overlap" do + + end + + it "returns true if the dates ranges overlap" do + + end + end#overlap + +end From f7e8471d76915e68b641ff601509d0c7782dd513 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Wed, 7 Mar 2018 22:22:47 -0800 Subject: [PATCH 09/32] Modified some variables names --- lib/reservation.rb | 6 +++--- specs/booking_specs.rb | 15 +++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/reservation.rb b/lib/reservation.rb index 065bde5d9..e06728ae8 100644 --- a/lib/reservation.rb +++ b/lib/reservation.rb @@ -1,16 +1,16 @@ module Hotel class Reservation #This class will calculate the total cost for a given reservation. - attr_reader :checkin, :checkout, :days_range + attr_reader :checkin, :checkout, :range_of_dates PRICE_PER_NIGHT = 200 def initialize(checkin, checkout) @price_per_night = PRICE_PER_NIGHT - @range_of_dates = Hotel::RangeDates.new(checkin, checkout) + @range_of_dates = Hotel::DatesRange.new(checkin, checkout) end def cost_reservation - @price_per_night * @range_of_dates.stay_length + @price_per_night * @range_of_dates.amount_days end end #class diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index 78ee7c33b..2bc770e22 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -12,7 +12,7 @@ end it "Create list of Reservation" do - @booking.list_reservations.must_equal [] + @booking.reservations_list.must_equal [] end end @@ -34,15 +34,18 @@ describe "reservations_per_day method" do before do @date1 = Date.new(2018,02,20) - @date2 = Date.new(2018,03,23) + @date2 = Date.new(2018,02,24) @date3 = Date.new(2018,03,31) @date4 = Date.new(2018,04,04) @date5 = Date.new(2018,04,29) + @date6 = Date.new(2018,05,02) + @date6 = Date.new(2018,05,10) @booking = Hotel::Booking.new + @booking.add_reservation(@date1, @date2) @booking.add_reservation(@date1, @date3) - @booking.add_reservation(@date1, @date4) - - + @booking.add_reservation(@date2, @date3) + @booking.add_reservation(@date4, @date5) + @booking.add_reservation(@date5, @date6) end it 'Returns an array of reservations instances' do @@ -54,7 +57,7 @@ end it 'Returns empty array if that day there is no reservations' do - @booking.reservations_per_day(@date2).must_equal [] + @booking.reservations_per_day(@date6).must_equal [] end it 'Returns all the reservations per day, when is not empty' do From 1bf0abfd01baaf21f1b0e2385f5627d096c88111 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Wed, 7 Mar 2018 22:48:36 -0800 Subject: [PATCH 10/32] Tests created for class Room.Will probably need to add or modify. --- specs/rooms_specs.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 specs/rooms_specs.rb diff --git a/specs/rooms_specs.rb b/specs/rooms_specs.rb new file mode 100644 index 000000000..f9ad5fc97 --- /dev/null +++ b/specs/rooms_specs.rb @@ -0,0 +1,31 @@ +require_relative 'spec_helper' +require 'pry' + +describe 'Rooms class' do + before do + + end + + describe 'Initialize' do + it "Can be created" do + + end + + end + + describe "Available rooms in date range " do + + it "Returns list of available rooms if there are NO reservations" do + + end + + it "Returns empty array if no vacancies" do + + end + + it "Returns the right number of rooms available" do + + end + + end +end From 5d595e0792f78c20167e82f4a5ffde12d2424b9e Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Wed, 7 Mar 2018 23:46:22 -0800 Subject: [PATCH 11/32] class Rooms is created --- lib/rooms.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/rooms.rb diff --git a/lib/rooms.rb b/lib/rooms.rb new file mode 100644 index 000000000..ba6c24d90 --- /dev/null +++ b/lib/rooms.rb @@ -0,0 +1,19 @@ +module Hotel + +PRICE_PER_NIGHT = 200 + + class Rooms + + attr_accessor :room_status + attr_reader :number + + def initialize(number, rate) + return raise ArgumentError.new("That room number is not valid") if !(1..20).include?(number) + @room_status = :AVAILABLE + @number = number + @rate = PRICE_PER_NIGHT + end + + + end +end From b1177e8740a82a38db88ec6f203e8bf7ea881c86 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Wed, 7 Mar 2018 23:47:34 -0800 Subject: [PATCH 12/32] Update on the tests for class Rooms. --- specs/rooms_specs.rb | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/specs/rooms_specs.rb b/specs/rooms_specs.rb index f9ad5fc97..913ab1498 100644 --- a/specs/rooms_specs.rb +++ b/specs/rooms_specs.rb @@ -1,14 +1,28 @@ -require_relative 'spec_helper' + require_relative 'spec_helper' require 'pry' describe 'Rooms class' do before do - + @room = Hotel::Room.new(1, 200) end describe 'Initialize' do - it "Can be created" do + it "creates an instance" do + @room.must_be_instance_of Hotel::Rooms + end + + it "raises an error if the room number is not valid" do + proc { room = Hotel::Room.new(30, 200) }.must_raise ArgumentError + end + + it "responds to the room number" do + @room.number.must_be_kind_of Integer + @room.must_respond_to :number + end + it "access the status of the room" do + @room.number.must_be_kind_of Symbol + @room.must_equal :AVAILABLE end end From 7fa700a3ef7088c5a538dc72a0675e70a8b4dcba Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 10:45:07 -0800 Subject: [PATCH 13/32] Add parameter room number to Reservation class --- lib/reservation.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/reservation.rb b/lib/reservation.rb index e06728ae8..90ffb674e 100644 --- a/lib/reservation.rb +++ b/lib/reservation.rb @@ -1,17 +1,18 @@ module Hotel class Reservation #This class will calculate the total cost for a given reservation. - attr_reader :checkin, :checkout, :range_of_dates + attr_reader :checkin, :checkout, :range_of_dates, :room_number + - PRICE_PER_NIGHT = 200 def initialize(checkin, checkout) @price_per_night = PRICE_PER_NIGHT @range_of_dates = Hotel::DatesRange.new(checkin, checkout) + @room_number = room_number end def cost_reservation @price_per_night * @range_of_dates.amount_days end - end #class -end #module + end +end From 296bf697a4ccfb7fe5b7275ef47d0a5da4818413 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 11:09:13 -0800 Subject: [PATCH 14/32] Refactor tests for Reservation class --- specs/reservation_specs.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/specs/reservation_specs.rb b/specs/reservation_specs.rb index b6169e30f..cb1100f04 100644 --- a/specs/reservation_specs.rb +++ b/specs/reservation_specs.rb @@ -5,7 +5,8 @@ before do @start_date = Date.new(2018, 8, 20) @end_date = Date.new(2018, 8, 27) - @reservation_new = Hotel::Reservation.new(@start_date, @end_date) + @reservation_new = Hotel::Reservation.new(@start_date, @end_date, @room_number) + @room_number = 5 end describe 'Initialize' do @@ -13,6 +14,13 @@ @reservation_new.must_be_instance_of Hotel::Reservation end + it "does not initialize incorrect dates like using the checkin date for checkout also" do + proc{Hotel::Reservation.new(@start_date, @start_date, @room_number)}.must_raise ArgumentError + end + + it "does not initialize incorrect dates like using the checkout date for checkin also" do + proc{Hotel::Reservation.new(@end_date, @end_date, @room_number)}.must_raise ArgumentError + end end describe "cost_reservation method " do From 36e7317030f84f8d3606443e4ae6fcf4cc902c30 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 11:25:28 -0800 Subject: [PATCH 15/32] Refactor and added to raise an ArgumentError when rooms are not available. --- lib/booking.rb | 50 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/lib/booking.rb b/lib/booking.rb index 65d86bae9..01c03f15a 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -1,15 +1,54 @@ module Hotel - class Booking # This class will control reservations + class Booking attr_reader :reservations_list def initialize @reservations_list = [] + @rooms_list = {} + setup_rooms + + end + + def setup_rooms + 20.times do |i| + @rooms_list["#{i + 1}"] = [] + end + end + + def is_available?(room_number, dates_to_reserve) + available = true + dates_to_reserve = Hotel::DatesRange.new(@checkin, @checkout) + @rooms_list[room_number].each do |dates| + if dates_to_reserve.overlap?(dates) + available = false + end + end + return available + end + + def avaliable_rooms_daterange(checkin, checkout) + list_availables = [] + date_range = Hotel::DateRange.new(checkin,checkout) + @rooms_list.each do |room_number, dates| + if is_available?(room_number, date_range) + list_availables << room_number + end + end + return list_availables end def add_reservation(checkin, checkout) - reservation_new = Hotel::Reservation.new(checkin, checkout) - @reservations_list << reservation_new + dates_to_reserve = Hotel::DatesRange.new(checkin, checkout) + @rooms_list.each do |room_number, dates| + if is_available?(room_number, dates_to_reserve) + @rooms_list[room_number] << dates_to_reserve + new_reservation = Hotel::Reservation.new(checkin, checkout, room_number) + @list_reservations << new_reservation + return new_reservation + end + end + raise ArgumentError.new("Sorry!, No rooms available during that date range") end def reservations_per_day(date) @@ -21,6 +60,5 @@ def reservations_per_day(date) end return reservations_list_per_day end - - end #class -end #module + end +end From 859fe65334e811cc256e55b3415e1f605eca4972 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 11:26:08 -0800 Subject: [PATCH 16/32] Added some tests and refactor others for Booking class. --- specs/booking_specs.rb | 135 ++++++++++++++++++++++++++++++++--------- 1 file changed, 105 insertions(+), 30 deletions(-) diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index 2bc770e22..c6d1948a9 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -11,8 +11,17 @@ @booking.must_be_instance_of Hotel::Booking end - it "Create list of Reservation" do + it "Creates a list of Reservations" do @booking.reservations_list.must_equal [] + @booking.must_respond_to :reservations_list + end + + it "has a collection of 20 rooms" do + @booking.rooms_list.length.must_equal 20 + end + + it "Creates a collection of rooms in a hash" do + @booking.rooms_list.must_be_instance_of Hash end end @@ -22,47 +31,113 @@ @end_date = Date.new(2018, 8, 27) end - it "Creates an array of reservation" do + it "Creates an array of reservations" do + day1 = Date.new(2018,11,8) + day2 = Date.new(2018,11,13) + day3 = Date.new(2018,11,25) + day4 = Date.new(2018,11,27) + day5 = Date.new(2018,11,30) + day6 = Date.new(2018,12,4) + day7 = Date.new(2018,12,7) + @booking.add_reservation(day1,day2) + @booking.add_reservation(day3,day4) + @booking.add_reservation(day4,day5) + @booking.add_reservation(day5,day6) + @booking.add_reservation(day6,day7) + @booking.list_reservations.length.must_equal 5 @booking.add_reservation(@start_date,@end_date).must_be_instance_of Array end - it "Each element in the array is a Reservation" do - @booking.add_reservation(@start_date,@end_date)[0].must_be_instance_of Hotel::Reservation + it "Creates an instance of reservation for a date range" do + new_reservation = @booking.add_reservation(@start_date,@end_date) + new_reservation.must_be_instance_of Hotel::Reservation end - end - describe "reservations_per_day method" do - before do - @date1 = Date.new(2018,02,20) - @date2 = Date.new(2018,02,24) - @date3 = Date.new(2018,03,31) - @date4 = Date.new(2018,04,04) - @date5 = Date.new(2018,04,29) - @date6 = Date.new(2018,05,02) - @date6 = Date.new(2018,05,10) - @booking = Hotel::Booking.new - @booking.add_reservation(@date1, @date2) - @booking.add_reservation(@date1, @date3) - @booking.add_reservation(@date2, @date3) - @booking.add_reservation(@date4, @date5) - @booking.add_reservation(@date5, @date6) + it 'does not create a reservation if no rooms are available' do + 20.times do + @booking.add_reservation(@day1,@day2) + end + @booking.add_reservation(@day1,@day2).must_raise ArgumentError end - it 'Returns an array of reservations instances' do - @booking.reservations_per_day(@date1)[0].must_be_instance_of Hotel::Reservation + it 'changes the hash of rooms' do + day1 = Date.new(2018,11,8) + day2 = Date.new(2018,11,13) + day3 = Date.new(2018,11,25) + day4 = Date.new(2018,11,27) + day5 = Date.new(2018,11,30) + @booking.add_reservation(day1,day2) + @booking.add_reservation(day3,day4) + @booking.add_reservation(day4,day5) + @booking.rooms["1"].length.must_equal 3 + @booking.add_reservation(day4,day5) + @booking.rooms["2"].length.must_equal 1 + @booking.rooms["3"].length.must_equal 0 end - it 'Returns an array of reservations of the specific date ' do - @booking.reservations_per_day(@date1).must_be_instance_of Array - end + end +end - it 'Returns empty array if that day there is no reservations' do - @booking.reservations_per_day(@date6).must_equal [] - end - it 'Returns all the reservations per day, when is not empty' do - @booking.reservations_per_day(@date1).length.must_equal 2 +describe "reservations_per_day method" do + before do + @date1 = Date.new(2018,02,20) + @date2 = Date.new(2018,02,24) + @date3 = Date.new(2018,03,31) + @date4 = Date.new(2018,04,04) + @date5 = Date.new(2018,04,29) + @date6 = Date.new(2018,05,02) + @date6 = Date.new(2018,05,10) + @booking = Hotel::Booking.new + @booking.add_reservation(@date1, @date2) + @booking.add_reservation(@date1, @date3) + @booking.add_reservation(@date2, @date3) + @booking.add_reservation(@date4, @date5) + @booking.add_reservation(@date5, @date6) + end + + it 'Returns an array of reservations instances' do + @booking.reservations_per_day(@date1)[0].must_be_instance_of Hotel::Reservation + end + + it 'Returns an array of reservations of the specific date ' do + @booking.reservations_per_day(@date1).must_be_instance_of Array + end + + it 'Returns empty array if that day there is no reservations' do + @booking.reservations_per_day(@date6).must_equal [] + end + + it 'Returns all the reservations per day, when is not empty' do + @booking.reservations_per_day(@date1).length.must_equal 2 + end + + describe 'avaliable_rooms_daterange method' + before do + @day1 = Date.new(2018,12,13) + @day2 = Date.new(2018,12,19) + @day3 = Date.new(2018,12,7) + @day4 = Date.new(2018,12,12) + @day5 = Date.new(2018,12,24) + @day6 = Date.new(2018,12,14) + @day7 = Date.new(2018,12,16) + @all_rooms = [] + 20.times do |i| + @all_rooms << "#{i+1}" end + end + it "returns all the rooms if there is 0 reservations for that date range" do + @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms end + + it "returns the rooms avaliables" do + 3.times do + @booking.add_reservation(@day1, @day2) + end + @booking.add_reservation(@day3,@day4) + @booking.add_reservation(@day1,@day5) + @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[4..19] + end + end From 968b421d9226047147eadf13173cbeb97951dd7d Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 12:14:05 -0800 Subject: [PATCH 17/32] Refactored Reservation class, I was missing to initialize the room_number variable. --- lib/reservation.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/reservation.rb b/lib/reservation.rb index 90ffb674e..7ea487d21 100644 --- a/lib/reservation.rb +++ b/lib/reservation.rb @@ -1,10 +1,10 @@ module Hotel - class Reservation #This class will calculate the total cost for a given reservation. + class Reservation attr_reader :checkin, :checkout, :range_of_dates, :room_number - def initialize(checkin, checkout) + def initialize(checkin, checkout, room_number) @price_per_night = PRICE_PER_NIGHT @range_of_dates = Hotel::DatesRange.new(checkin, checkout) @room_number = room_number From 44ac8d6a6f5fe99795ad3a3bdb2c883a1cb8061c Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 13:33:34 -0800 Subject: [PATCH 18/32] Refactored design of class and eliminated Rooms class. --- specs/spec_helper.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/specs/spec_helper.rb b/specs/spec_helper.rb index cfc4b5923..beff22a86 100644 --- a/specs/spec_helper.rb +++ b/specs/spec_helper.rb @@ -13,4 +13,3 @@ require_relative '../lib/dates' require_relative '../lib/reservation' require_relative '../lib/blockrooms' -require_relative '../lib/rooms' From 6e26ec7a3c483b483e758f830b60085aa9914f6d Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 13:38:10 -0800 Subject: [PATCH 19/32] Refactor made to Booking and reservation class. Now all tests passing. --- lib/booking.rb | 9 +++-- lib/dates.rb | 8 +++-- lib/reservation.rb | 2 ++ specs/booking_specs.rb | 69 ++++++++++++++++++++------------------ specs/reservation_specs.rb | 2 +- 5 files changed, 50 insertions(+), 40 deletions(-) diff --git a/lib/booking.rb b/lib/booking.rb index 01c03f15a..0b46098f6 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -1,8 +1,7 @@ module Hotel class Booking - attr_reader :reservations_list - + attr_reader :reservations_list, :rooms_list def initialize @reservations_list = [] @rooms_list = {} @@ -18,7 +17,7 @@ def setup_rooms def is_available?(room_number, dates_to_reserve) available = true - dates_to_reserve = Hotel::DatesRange.new(@checkin, @checkout) + @rooms_list[room_number].each do |dates| if dates_to_reserve.overlap?(dates) available = false @@ -29,7 +28,7 @@ def is_available?(room_number, dates_to_reserve) def avaliable_rooms_daterange(checkin, checkout) list_availables = [] - date_range = Hotel::DateRange.new(checkin,checkout) + date_range = Hotel::DatesRange.new(checkin,checkout) @rooms_list.each do |room_number, dates| if is_available?(room_number, date_range) list_availables << room_number @@ -44,7 +43,7 @@ def add_reservation(checkin, checkout) if is_available?(room_number, dates_to_reserve) @rooms_list[room_number] << dates_to_reserve new_reservation = Hotel::Reservation.new(checkin, checkout, room_number) - @list_reservations << new_reservation + @reservations_list << new_reservation return new_reservation end end diff --git a/lib/dates.rb b/lib/dates.rb index b18d8d442..987510e1b 100644 --- a/lib/dates.rb +++ b/lib/dates.rb @@ -12,7 +12,7 @@ def initialize(start_date, end_date) def date_validation return true if @checkin < @checkout - raise StandardError + raise ArgumentError.new("Your date is not a valid input") end def amount_days @@ -24,7 +24,11 @@ def include?(date) return false end - # need to make a method to deal with overlapping + def overlap?(another) + return true if another.checkin <= self.checkin && another.checkout > self.checkin + return true if another.checkin >= self.checkin && another.checkin < self.checkout + return false + end end end diff --git a/lib/reservation.rb b/lib/reservation.rb index 7ea487d21..6757af7e6 100644 --- a/lib/reservation.rb +++ b/lib/reservation.rb @@ -1,5 +1,7 @@ module Hotel +PRICE_PER_NIGHT = 200 + class Reservation attr_reader :checkin, :checkout, :range_of_dates, :room_number diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index c6d1948a9..120bf4e83 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -31,7 +31,7 @@ @end_date = Date.new(2018, 8, 27) end - it "Creates an array of reservations" do + it "Creates a new reservation" do day1 = Date.new(2018,11,8) day2 = Date.new(2018,11,13) day3 = Date.new(2018,11,25) @@ -44,20 +44,24 @@ @booking.add_reservation(day4,day5) @booking.add_reservation(day5,day6) @booking.add_reservation(day6,day7) - @booking.list_reservations.length.must_equal 5 - @booking.add_reservation(@start_date,@end_date).must_be_instance_of Array + @booking.reservations_list.length.must_equal 5 + @booking.reservations_list.must_be_instance_of Array + @booking.add_reservation(@start_date,@end_date).must_be_instance_of Hotel::Reservation end + it "Creates an instance of reservation for a date range" do new_reservation = @booking.add_reservation(@start_date,@end_date) new_reservation.must_be_instance_of Hotel::Reservation end - it 'does not create a reservation if no rooms are available' do + it 'does not create a reservation if no rooms are available' do + day1 = Date.new(2018,11,8) + day2 = Date.new(2018,11,13) 20.times do - @booking.add_reservation(@day1,@day2) + @booking.add_reservation(day1,day2) end - @booking.add_reservation(@day1,@day2).must_raise ArgumentError + proc{@booking.add_reservation(day1,day2)}.must_raise ArgumentError end it 'changes the hash of rooms' do @@ -69,10 +73,10 @@ @booking.add_reservation(day1,day2) @booking.add_reservation(day3,day4) @booking.add_reservation(day4,day5) - @booking.rooms["1"].length.must_equal 3 + @booking.rooms_list["1"].length.must_equal 3 @booking.add_reservation(day4,day5) - @booking.rooms["2"].length.must_equal 1 - @booking.rooms["3"].length.must_equal 0 + @booking.rooms_list["2"].length.must_equal 1 + @booking.rooms_list["3"].length.must_equal 0 end end @@ -112,32 +116,33 @@ @booking.reservations_per_day(@date1).length.must_equal 2 end - describe 'avaliable_rooms_daterange method' - before do - @day1 = Date.new(2018,12,13) - @day2 = Date.new(2018,12,19) - @day3 = Date.new(2018,12,7) - @day4 = Date.new(2018,12,12) - @day5 = Date.new(2018,12,24) - @day6 = Date.new(2018,12,14) - @day7 = Date.new(2018,12,16) - @all_rooms = [] - 20.times do |i| - @all_rooms << "#{i+1}" + describe 'avaliable_rooms_daterange method' do + before do + @day1 = Date.new(2018,12,13) + @day2 = Date.new(2018,12,19) + @day3 = Date.new(2018,12,07) + @day4 = Date.new(2018,12,12) + @day5 = Date.new(2018,12,24) + @day6 = Date.new(2018,12,14) + @day7 = Date.new(2018,12,16) + @all_rooms = [] + 20.times do |i| + @all_rooms << "#{i+1}" + end end - end - it "returns all the rooms if there is 0 reservations for that date range" do - @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms - end + it "returns all the rooms if there is 0 reservations for that date range" do + @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms + end - it "returns the rooms avaliables" do - 3.times do - @booking.add_reservation(@day1, @day2) + it "returns the rooms avaliables" do + 3.times do + @booking.add_reservation(@day1, @day2) + end + @booking.add_reservation(@day3,@day4) + @booking.add_reservation(@day1,@day5) + @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[4..19] end - @booking.add_reservation(@day3,@day4) - @booking.add_reservation(@day1,@day5) - @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[4..19] - end + end end diff --git a/specs/reservation_specs.rb b/specs/reservation_specs.rb index cb1100f04..0a8ad3048 100644 --- a/specs/reservation_specs.rb +++ b/specs/reservation_specs.rb @@ -5,8 +5,8 @@ before do @start_date = Date.new(2018, 8, 20) @end_date = Date.new(2018, 8, 27) - @reservation_new = Hotel::Reservation.new(@start_date, @end_date, @room_number) @room_number = 5 + @reservation_new = Hotel::Reservation.new(@start_date, @end_date, @room_number) end describe 'Initialize' do From a6924898c0195b938786854b694416e92a7228ef Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 17:01:55 -0800 Subject: [PATCH 20/32] Tests created for new class BlockRooms and created file for class BlockRooms and created some methods. --- lib/blockrooms.rb | 25 +++++++++++++++++++++ specs/blockrooms_specs.rb | 47 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 lib/blockrooms.rb create mode 100644 specs/blockrooms_specs.rb diff --git a/lib/blockrooms.rb b/lib/blockrooms.rb new file mode 100644 index 000000000..3712939e4 --- /dev/null +++ b/lib/blockrooms.rb @@ -0,0 +1,25 @@ +module Hotel + class BlockRooms + + def initialize(checkin, checkout, rooms_set, rate) + @price_per_night = rate + @days_range = Hotel::DatesRange.new(checkin, checkout) + @rooms_set = rooms_set + end + + def available_room_in_block? + + end + + def reservation_block_room + + raise ArgumentError.new("Sorry, no more rooms available in the blocked rooms for this event") + + end + + def total_cost_block_room + + end + + end +end diff --git a/specs/blockrooms_specs.rb b/specs/blockrooms_specs.rb new file mode 100644 index 000000000..d7fa6bcc6 --- /dev/null +++ b/specs/blockrooms_specs.rb @@ -0,0 +1,47 @@ +require_relative 'spec_helper' +require 'pry' + +describe 'BlockRooms class' do + before do + + end + + describe 'Initialize' do + it "Can be created" do + + end + + end + + describe "total_cost method " do + + it 'Returns the total cost for reservation of a blocked room' do + + end + + end + + describe "available_room_in_block? method" do + + it 'returns false if no rooms available in the blocked rooms set' do + + end + + it 'returns true if they are rooms available in the blocked rooms set' do + + end + end + + describe "reservation of block rooms method" do + + it "modifies the rooms_set when a new reservation is created" do + + end + + it 'raises an error if no more blocked rooms are available' do + + proc{}.must_raise ArgumentError + end + end + +end From f6334bf6492ccfdb7b0d507e5e25c051d8c72460 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 17:36:59 -0800 Subject: [PATCH 21/32] Implementation of methods for class BlockRooms. --- lib/blockrooms.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/blockrooms.rb b/lib/blockrooms.rb index 3712939e4..3b8e07d21 100644 --- a/lib/blockrooms.rb +++ b/lib/blockrooms.rb @@ -1,24 +1,24 @@ module Hotel class BlockRooms - def initialize(checkin, checkout, rooms_set, rate) + def initialize(checkin, checkout, blocked_rooms, rate) @price_per_night = rate @days_range = Hotel::DatesRange.new(checkin, checkout) - @rooms_set = rooms_set + @blocked_rooms = blocked_rooms end def available_room_in_block? - + @blocked_rooms.length > 0 ? true : false end def reservation_block_room - - raise ArgumentError.new("Sorry, no more rooms available in the blocked rooms for this event") - + raise ArgumentError.new("Unavailable blocked rooms") if !available_room_in_block? + @blocked_rooms.delete_at(0) + return @blocked_rooms end def total_cost_block_room - + @price_per_night * @days_range.amount_days end end From 6690d4e085939d652094f698cbed704a59b733ac Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 17:58:29 -0800 Subject: [PATCH 22/32] Tests for class BlockRooms passing. --- specs/blockrooms_specs.rb | 43 +++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/specs/blockrooms_specs.rb b/specs/blockrooms_specs.rb index d7fa6bcc6..5b5fa6ab6 100644 --- a/specs/blockrooms_specs.rb +++ b/specs/blockrooms_specs.rb @@ -3,20 +3,16 @@ describe 'BlockRooms class' do before do - + @start_date = Date.new(2018, 8, 20) + @end_date = Date.new(2018, 8, 27) + @blocked_rooms = [1,2,3,4] + @discounted_rate = 130.50 + @new_block = Hotel::BlockRooms.new(@start_date, @end_date, @blocked_rooms, @discounted_rate) end describe 'Initialize' do it "Can be created" do - - end - - end - - describe "total_cost method " do - - it 'Returns the total cost for reservation of a blocked room' do - + @new_block.must_be_instance_of Hotel::BlockRooms end end @@ -24,24 +20,41 @@ describe "available_room_in_block? method" do it 'returns false if no rooms available in the blocked rooms set' do - + 4.times do + @new_block.reservation_block_room + end + @new_block.available_room_in_block?.must_equal false end it 'returns true if they are rooms available in the blocked rooms set' do - + @new_block.available_room_in_block?.must_equal true end end describe "reservation of block rooms method" do - it "modifies the rooms_set when a new reservation is created" do - + it "modifies blocked_rooms when a new reservation of a block room is created" do + @new_block.reservation_block_room.must_equal [2, 3, 4] + @new_block.reservation_block_room.must_equal [3,4] + @new_block.reservation_block_room.must_be_kind_of Array end it 'raises an error if no more blocked rooms are available' do + 4.times do + @new_block.reservation_block_room + end + proc{@new_block.reservation_block_room}.must_raise ArgumentError + end + end - proc{}.must_raise ArgumentError + describe "total_cost_block_room method " do + + it 'Returns the total cost for reservation of a blocked room' do + @new_block.total_cost_block_room.must_be_kind_of Float + @new_block.total_cost_block_room.must_equal 913.50 end + end + end From 29265b6956d4112bca238b64d913cff043e03c4e Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 18:24:44 -0800 Subject: [PATCH 23/32] Pseudocode for a method to create a block of rooms in Booking and Tests created not implemented. --- lib/booking.rb | 10 ++++++++++ specs/blockrooms_specs.rb | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/booking.rb b/lib/booking.rb index 0b46098f6..03aefea45 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -59,5 +59,15 @@ def reservations_per_day(date) end return reservations_list_per_day end + + # Pseudocode to be able to create a block of rooms + # def capacity_block_rooms? (checkin, checkout, num_rooms_to_block) + # According to the requirements of the project a block can contain a maximum of 5 rooms + # raise an error if num_rooms_to_block is > 5. + # using the method avaliable_rooms_daterange check if the length of list of available rooms + # is >= to the numbers rooms to be blocked + # if true return true otherwise return false. + + end end diff --git a/specs/blockrooms_specs.rb b/specs/blockrooms_specs.rb index 5b5fa6ab6..0b7832eb1 100644 --- a/specs/blockrooms_specs.rb +++ b/specs/blockrooms_specs.rb @@ -14,7 +14,6 @@ it "Can be created" do @new_block.must_be_instance_of Hotel::BlockRooms end - end describe "available_room_in_block? method" do From bf402d4fd345207fde168364b885bb457635b48e Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 18:37:55 -0800 Subject: [PATCH 24/32] Method capacity_for_block_rooms? in Booking was implemented and tests passed. --- lib/booking.rb | 18 ++++++++++-------- specs/booking_specs.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/lib/booking.rb b/lib/booking.rb index 03aefea45..7fea6e692 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -1,4 +1,8 @@ module Hotel + + Amount_Rooms_Hotel = 20 + Max_Block_Rooms = 5 + class Booking attr_reader :reservations_list, :rooms_list @@ -10,7 +14,7 @@ def initialize end def setup_rooms - 20.times do |i| + Amount_Rooms_Hotel.times do |i| @rooms_list["#{i + 1}"] = [] end end @@ -60,14 +64,12 @@ def reservations_per_day(date) return reservations_list_per_day end - # Pseudocode to be able to create a block of rooms - # def capacity_block_rooms? (checkin, checkout, num_rooms_to_block) - # According to the requirements of the project a block can contain a maximum of 5 rooms - # raise an error if num_rooms_to_block is > 5. - # using the method avaliable_rooms_daterange check if the length of list of available rooms - # is >= to the numbers rooms to be blocked - # if true return true otherwise return false. + def capacity_for_block_rooms?(checkin, checkout, num_rooms_to_block) + raise ArgumentError.new('The maximum of rooms to block is 5') if num_rooms_to_block > Max_Block_Rooms + return true if avaliable_rooms_daterange(checkin, checkout).length >= num_rooms_to_block + return false + end end end diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index 120bf4e83..de00a6546 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -145,4 +145,30 @@ end end + describe 'capacity_for_block_rooms? method' do + + before do + @checkin = Date.new(2018,12,7) + @checkout = Date.new(2018,12,13) + end + + it 'returns false if it is not possible to create block' do + 16.times do + @booking.add_reservation(@checkin, @checkout) + end + @booking.capacity_for_block_rooms?(@checkin, @checkout,5).must_equal false + end + + it 'raises an error if the number of rooms to block is greater than 5' do + proc{@booking.capacity_for_block_rooms?(@checkin, @checkout, 8)}.must_raise ArgumentError + end + + it 'returns true if it is possible to create the block' do + 14.times do + @booking.add_reservation(@checkin, @checkout) + end + @booking.capacity_for_block_rooms?(@checkin, @checkout,5).must_equal true + end + + end end From 96d7d2754346f36781784e96b9b257e59da3d5e1 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 9 Mar 2018 18:59:40 -0800 Subject: [PATCH 25/32] Pseudocode for method building_block_rooms method to reserve block rooms and Tests created. --- lib/booking.rb | 10 +++++++++- specs/booking_specs.rb | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/booking.rb b/lib/booking.rb index 7fea6e692..dc9be0344 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -64,12 +64,20 @@ def reservations_per_day(date) return reservations_list_per_day end - def capacity_for_block_rooms?(checkin, checkout, num_rooms_to_block) raise ArgumentError.new('The maximum of rooms to block is 5') if num_rooms_to_block > Max_Block_Rooms return true if avaliable_rooms_daterange(checkin, checkout).length >= num_rooms_to_block return false end + #Pseudocode for a method to create a block of rooms + def building_block_rooms(checkin, checkout, num_rooms_to_block, discounted_rate) + # Create an array of the rooms in the block + # Use method capacity_for_block_rooms to check if there is capacity for blocking rooms. + # if its true then create reservations in a loop that runs the amount of num_rooms_to_block + # shuffle the reservations into the array of rooms in the block. + # the method should return a new instance of class BlockRooms + return Hotel::BlockRooms.new(checkin, checkout, num_rooms_to_block, discounted_rate) + end end end diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index de00a6546..b4a9bf83b 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -171,4 +171,24 @@ end end + + describe 'building_block_rooms method' do + before do + @checkin = Date.new(2018,12,7) + @checkout = Date.new(2018,12,13) + @num_rooms_to_block = 5 + @discounted_rate = 120 + + end + + it 'returns an array of blocked rooms if there is enough rooms available' do + @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate).must_be_instance_of Hotel::BlockRooms + @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate).must_be_kind_of Array + end + + it 'reserves a room from within a block of rooms' do + @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate) + @booking.reservations_list.length.must_equal 5 + end + end end From 7e7b0cb85c63554b89b8ecd594099232e97a13b5 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Sun, 11 Mar 2018 10:03:12 -0700 Subject: [PATCH 26/32] Implementation of building_block_rooms method and tests passing. --- lib/booking.rb | 19 ++++++++------- specs/booking_specs.rb | 54 ++++++++++++++++++++++++++---------------- 2 files changed, 43 insertions(+), 30 deletions(-) diff --git a/lib/booking.rb b/lib/booking.rb index dc9be0344..45c5c8607 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -5,7 +5,7 @@ module Hotel class Booking - attr_reader :reservations_list, :rooms_list + attr_reader :rooms_list, :reservations_list def initialize @reservations_list = [] @rooms_list = {} @@ -14,8 +14,8 @@ def initialize end def setup_rooms - Amount_Rooms_Hotel.times do |i| - @rooms_list["#{i + 1}"] = [] + Amount_Rooms_Hotel.times do |num| + @rooms_list["#{num + 1}"] = [] end end @@ -70,13 +70,14 @@ def capacity_for_block_rooms?(checkin, checkout, num_rooms_to_block) return false end - #Pseudocode for a method to create a block of rooms def building_block_rooms(checkin, checkout, num_rooms_to_block, discounted_rate) - # Create an array of the rooms in the block - # Use method capacity_for_block_rooms to check if there is capacity for blocking rooms. - # if its true then create reservations in a loop that runs the amount of num_rooms_to_block - # shuffle the reservations into the array of rooms in the block. - # the method should return a new instance of class BlockRooms + array_rooms_blocked = [] + if capacity_for_block_rooms?(checkin, checkout, num_rooms_to_block) + num_rooms_to_block.times do + reservation_block_room = add_reservation(checkin, checkout) + array_rooms_blocked << reservation_block_room.room_number + end + end return Hotel::BlockRooms.new(checkin, checkout, num_rooms_to_block, discounted_rate) end end diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index b4a9bf83b..9a429ac34 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -6,7 +6,7 @@ @booking = Hotel::Booking.new end - describe 'Initialize' do + describe 'Initialize method' do it "Can be created" do @booking.must_be_instance_of Hotel::Booking end @@ -22,6 +22,7 @@ it "Creates a collection of rooms in a hash" do @booking.rooms_list.must_be_instance_of Hash + @booking.must_respond_to :rooms_list end end @@ -46,7 +47,6 @@ @booking.add_reservation(day6,day7) @booking.reservations_list.length.must_equal 5 @booking.reservations_list.must_be_instance_of Array - @booking.add_reservation(@start_date,@end_date).must_be_instance_of Hotel::Reservation end @@ -64,19 +64,29 @@ proc{@booking.add_reservation(day1,day2)}.must_raise ArgumentError end - it 'changes the hash of rooms' do + it 'changes the collection of rooms as more reservations are added' do day1 = Date.new(2018,11,8) day2 = Date.new(2018,11,13) day3 = Date.new(2018,11,25) day4 = Date.new(2018,11,27) day5 = Date.new(2018,11,30) + day6 = Date.new(2018,12,02) + day7 = Date.new(2018,12,05) @booking.add_reservation(day1,day2) @booking.add_reservation(day3,day4) @booking.add_reservation(day4,day5) - @booking.rooms_list["1"].length.must_equal 3 + @booking.add_reservation(day5,day6) + @booking.add_reservation(day6,day7) + @booking.rooms_list["1"].length.must_equal 5 + @booking.add_reservation(day4,day5) + @booking.add_reservation(day5,day6) + @booking.add_reservation(day6,day7) + @booking.rooms_list["2"].length.must_equal 3 @booking.add_reservation(day4,day5) - @booking.rooms_list["2"].length.must_equal 1 - @booking.rooms_list["3"].length.must_equal 0 + @booking.add_reservation(day5,day6) + @booking.rooms_list["3"].length.must_equal 2 + @booking.add_reservation(day4,day5) + @booking.rooms_list["4"].length.must_equal 1 end end @@ -85,6 +95,7 @@ describe "reservations_per_day method" do before do + @booking = Hotel::Booking.new @date1 = Date.new(2018,02,20) @date2 = Date.new(2018,02,24) @date3 = Date.new(2018,03,31) @@ -92,7 +103,7 @@ @date5 = Date.new(2018,04,29) @date6 = Date.new(2018,05,02) @date6 = Date.new(2018,05,10) - @booking = Hotel::Booking.new + @date7 = Date.new(2018,05,13) @booking.add_reservation(@date1, @date2) @booking.add_reservation(@date1, @date3) @booking.add_reservation(@date2, @date3) @@ -108,8 +119,8 @@ @booking.reservations_per_day(@date1).must_be_instance_of Array end - it 'Returns empty array if that day there is no reservations' do - @booking.reservations_per_day(@date6).must_equal [] + it 'Returns a empty array if that day there is no reservations' do + @booking.reservations_per_day(@date7).must_equal [] end it 'Returns all the reservations per day, when is not empty' do @@ -126,22 +137,22 @@ @day6 = Date.new(2018,12,14) @day7 = Date.new(2018,12,16) @all_rooms = [] - 20.times do |i| - @all_rooms << "#{i+1}" + 20.times do |num| + @all_rooms << "#{num+1}" end end - it "returns all the rooms if there is 0 reservations for that date range" do - @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms - end - - it "returns the rooms avaliables" do - 3.times do + it "returns the rooms avaliables in the date range" do + 5.times do @booking.add_reservation(@day1, @day2) end @booking.add_reservation(@day3,@day4) - @booking.add_reservation(@day1,@day5) - @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[4..19] + @booking.add_reservation(@day4,@day6) + @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[5..19] + end + + it "returns all the rooms if there is 0 reservations for that date range" do + @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms end end @@ -183,12 +194,13 @@ it 'returns an array of blocked rooms if there is enough rooms available' do @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate).must_be_instance_of Hotel::BlockRooms - @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate).must_be_kind_of Array end it 'reserves a room from within a block of rooms' do - @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate) @booking.reservations_list.length.must_equal 5 + @booking.building_block_rooms(@checkin, @checkout, @num_rooms_to_block,@discounted_rate) + #list of reservations was updated with the reservations of block rooms + @booking.reservations_list.length.must_equal 10 end end end From 699bad358f1e60082e0e6d69944dc245de73f489 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Sun, 11 Mar 2018 10:07:46 -0700 Subject: [PATCH 27/32] little refactor to reservation class and its tests. --- lib/reservation.rb | 2 +- specs/reservation_specs.rb | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/reservation.rb b/lib/reservation.rb index 6757af7e6..04aac9e13 100644 --- a/lib/reservation.rb +++ b/lib/reservation.rb @@ -13,7 +13,7 @@ def initialize(checkin, checkout, room_number) end def cost_reservation - @price_per_night * @range_of_dates.amount_days + (@price_per_night * @range_of_dates.amount_days).to_f end end diff --git a/specs/reservation_specs.rb b/specs/reservation_specs.rb index 0a8ad3048..4656d50a1 100644 --- a/specs/reservation_specs.rb +++ b/specs/reservation_specs.rb @@ -9,8 +9,8 @@ @reservation_new = Hotel::Reservation.new(@start_date, @end_date, @room_number) end - describe 'Initialize' do - it "Can be created" do + describe 'Initialize method' do + it "can be created" do @reservation_new.must_be_instance_of Hotel::Reservation end @@ -25,9 +25,11 @@ describe "cost_reservation method " do - it "Returns the cost of a reservation" do + it "returns the cost of a reservation" do @reservation_new.cost_reservation.must_equal 1400 + @reservation_new.cost_reservation.must_be_kind_of Float end + end end From f5429d3a884a5ccaf2177c822758c935bc59b786 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Sun, 11 Mar 2018 11:25:05 -0700 Subject: [PATCH 28/32] Refactor of tests for DatesRange class. --- lib/blockrooms.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/blockrooms.rb b/lib/blockrooms.rb index 3b8e07d21..6bf9b9bc2 100644 --- a/lib/blockrooms.rb +++ b/lib/blockrooms.rb @@ -1,8 +1,8 @@ module Hotel class BlockRooms - def initialize(checkin, checkout, blocked_rooms, rate) - @price_per_night = rate + def initialize(checkin, checkout, blocked_rooms, discounted_rate) + @price_per_night = discounted_rate.to_f @days_range = Hotel::DatesRange.new(checkin, checkout) @blocked_rooms = blocked_rooms end @@ -18,7 +18,7 @@ def reservation_block_room end def total_cost_block_room - @price_per_night * @days_range.amount_days + (@price_per_night * @days_range.amount_days) end end From 05017e5a02d9bd7e8e86e1d25e25cd249d6dcea5 Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Sun, 11 Mar 2018 11:26:31 -0700 Subject: [PATCH 29/32] For design purposes I decided to don't use Rooms class therefore, the spec_helper file was upated. --- specs/spec_helper.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/specs/spec_helper.rb b/specs/spec_helper.rb index beff22a86..6dd38cbf3 100644 --- a/specs/spec_helper.rb +++ b/specs/spec_helper.rb @@ -6,7 +6,6 @@ require 'minitest/autorun' require 'minitest/reporters' - Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new # Require_relative your lib files here! require_relative '../lib/booking' From d9eb235750f3712a4368bfda96661cd9d320031b Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Sun, 11 Mar 2018 23:12:20 -0700 Subject: [PATCH 30/32] cleaning of comments and adjusted spacing for final commit. --- lib/blockrooms.rb | 1 + lib/booking.rb | 6 +-- lib/dates.rb | 2 +- lib/reservation.rb | 2 +- specs/blockrooms_specs.rb | 2 - specs/booking_specs.rb | 58 +++++++++++---------- specs/dates_specs.rb | 102 +++++++++++++++++++++++-------------- specs/reservation_specs.rb | 2 - 8 files changed, 101 insertions(+), 74 deletions(-) diff --git a/lib/blockrooms.rb b/lib/blockrooms.rb index 6bf9b9bc2..c62f38e4c 100644 --- a/lib/blockrooms.rb +++ b/lib/blockrooms.rb @@ -1,4 +1,5 @@ module Hotel + class BlockRooms def initialize(checkin, checkout, blocked_rooms, discounted_rate) diff --git a/lib/booking.rb b/lib/booking.rb index 45c5c8607..8ef928c8d 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -20,14 +20,14 @@ def setup_rooms end def is_available?(room_number, dates_to_reserve) - available = true + is_available = true @rooms_list[room_number].each do |dates| if dates_to_reserve.overlap?(dates) - available = false + is_available = false end end - return available + return is_available end def avaliable_rooms_daterange(checkin, checkout) diff --git a/lib/dates.rb b/lib/dates.rb index 987510e1b..56d8e6667 100644 --- a/lib/dates.rb +++ b/lib/dates.rb @@ -1,6 +1,6 @@ module Hotel - class DatesRange #This class manages the date range + class DatesRange attr_reader :checkin, :checkout diff --git a/lib/reservation.rb b/lib/reservation.rb index 04aac9e13..df0868f62 100644 --- a/lib/reservation.rb +++ b/lib/reservation.rb @@ -3,8 +3,8 @@ module Hotel PRICE_PER_NIGHT = 200 class Reservation - attr_reader :checkin, :checkout, :range_of_dates, :room_number + attr_reader :checkin, :checkout, :range_of_dates, :room_number def initialize(checkin, checkout, room_number) @price_per_night = PRICE_PER_NIGHT diff --git a/specs/blockrooms_specs.rb b/specs/blockrooms_specs.rb index 0b7832eb1..9f9e8fddd 100644 --- a/specs/blockrooms_specs.rb +++ b/specs/blockrooms_specs.rb @@ -54,6 +54,4 @@ end end - - end diff --git a/specs/booking_specs.rb b/specs/booking_specs.rb index 9a429ac34..02c8f12b6 100644 --- a/specs/booking_specs.rb +++ b/specs/booking_specs.rb @@ -26,6 +26,36 @@ end end + describe 'avaliable_rooms_daterange method' do + before do + @day1 = Date.new(2018,12,13) + @day2 = Date.new(2018,12,19) + @day3 = Date.new(2018,12,07) + @day4 = Date.new(2018,12,12) + @day5 = Date.new(2018,12,24) + @day6 = Date.new(2018,12,14) + @day7 = Date.new(2018,12,16) + @all_rooms = [] + 20.times do |num| + @all_rooms << "#{num+1}" + end + end + + it "returns the rooms avaliables in the date range" do + 5.times do + @booking.add_reservation(@day1, @day2) + end + @booking.add_reservation(@day3,@day4) + @booking.add_reservation(@day4,@day6) + @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[5..19] + end + + it "returns all the rooms if there is 0 reservations for that date range" do + @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms + end + + end + describe "add_reservation method " do before do @start_date = Date.new(2018, 8, 20) @@ -127,35 +157,7 @@ @booking.reservations_per_day(@date1).length.must_equal 2 end - describe 'avaliable_rooms_daterange method' do - before do - @day1 = Date.new(2018,12,13) - @day2 = Date.new(2018,12,19) - @day3 = Date.new(2018,12,07) - @day4 = Date.new(2018,12,12) - @day5 = Date.new(2018,12,24) - @day6 = Date.new(2018,12,14) - @day7 = Date.new(2018,12,16) - @all_rooms = [] - 20.times do |num| - @all_rooms << "#{num+1}" - end - end - it "returns the rooms avaliables in the date range" do - 5.times do - @booking.add_reservation(@day1, @day2) - end - @booking.add_reservation(@day3,@day4) - @booking.add_reservation(@day4,@day6) - @booking.avaliable_rooms_daterange(@day6,@day7).must_equal @all_rooms[5..19] - end - - it "returns all the rooms if there is 0 reservations for that date range" do - @booking.avaliable_rooms_daterange(@day1, @day2).must_equal @all_rooms - end - - end describe 'capacity_for_block_rooms? method' do before do diff --git a/specs/dates_specs.rb b/specs/dates_specs.rb index 8b80628ab..11744ef42 100644 --- a/specs/dates_specs.rb +++ b/specs/dates_specs.rb @@ -1,101 +1,129 @@ require_relative 'spec_helper' describe 'DatesRange class' do - describe 'initialize' do + + describe 'initialize method' do before do - @start_date = Date.new(2018,6,4) - @end_date = Date.new(2018,6,7) + @checkin = Date.new(2018,6,4) + @checkout = Date.new(2018,6,7) + @date_new = Hotel::DatesRange.new(@checkin ,@checkout) end it "responds to checkin" do - date_new = Hotel::DatesRange.new(@start_date ,@end_date) - date_new.checkin.must_equal @start_date + @date_new.checkin.must_equal @checkin end it "responds to checkout" do - date_new = Hotel::DatesRange.new(@start_date ,@end_date) - date_new.checkout.must_equal @end_date + @date_new.checkout.must_equal @checkout end it "can be initialize if the dates are valid" do - Hotel::DatesRange.new( @start_date, @end_date).must_be_instance_of Hotel::DatesRange + Hotel::DatesRange.new(@checkin, @checkout).must_be_instance_of Hotel::DatesRange end - it "Raises an error if checkin and checkout are the same day" do - proc{Hotel::DatesRange.new(@start_date, @start_date)}.must_raise StandardError + it "raises an error if checkin and checkout are the same day" do + # checkin overlap with checkout when both are the same day. + proc{Hotel::DatesRange.new(@checkin, @checkin)}.must_raise ArgumentError end - it "Raises error if checkin is after checkout" do - proc {Hotel::DatesRange.new(@end_date, @start_date)}.must_raise StandardError + it "raises error if checkin is after checkout" do + proc {Hotel::DatesRange.new(@checkout, @checkin)}.must_raise ArgumentError end - it "Raises error if checkout is before checkin" do - proc {Hotel::DatesRange.new(@end_date, @start_date)}.must_raise StandardError + it "raises error if checkout is before checkin" do + proc {Hotel::DatesRange.new(@checkout, @checkin)}.must_raise StandardError end - end # describe initialize + end describe "amount_days method" do before do - @start_date = Date.new(2018,2,5) - @end_date = Date.new(2018,2,7) - end - - it "Returns an integer as result of the amount of days" do - date_new = Hotel::DatesRange.new(@start_date, @end_date) - date_new.amount_days.must_be_kind_of Integer + @checkin = Date.new(2018,2,5) + @checkout = Date.new(2018,2,7) + @date_new = Hotel::DatesRange.new(@checkin ,@checkout) end - it "Returns the correct amount of days" do - date_new = Hotel::DatesRange.new(@start_date, @end_date) - date_new.amount_days.must_equal 2 + it "returns the correct amount of days" do + @date_new.amount_days.must_be_kind_of Integer + @date_new.amount_days.must_equal 2 end - end # describe amount_days method + end describe 'include? method' do before do @checkin = Date.new(2018,2,5) @checkout = Date.new(2018,2,8) - @datenewrange = Hotel::DatesRange.new(@checkin, @checkout) + @date_new = Hotel::DatesRange.new(@checkin, @checkout) end it 'returns true if the date is included' do date = Date.new(2018,2,6) - @datenewrange.include?(date).must_equal true + @date_new.include?(date).must_equal true end it 'returns false for a date that is out of the range' do date = Date.new(2018,2,9) - @datenewrange.include?(date).must_equal false + @date_new.include?(date).must_equal false end it 'returns false if the date is the checkout date' do - @datenewrange.include?(@checkout).must_equal false + @date_new.include?(@checkout).must_equal false end it 'returns true if the date is the checkin date' do - @datenewrange.include?(@checkin).must_equal true + @date_new.include?(@checkin).must_equal true end end describe 'overlap?' do before do + @day1 = Date.new(2018,10,14) + @day2 = Date.new(2018,10,20) + @day3 = Date.new(2018,10,8) + @day4 = Date.new(2018,10,13) + @day5 = Date.new(2018,10,25) + @day6 = Date.new(2018,10,15) + @day7 = Date.new(2018,10,17) + @daterange1 = Hotel::DatesRange.new(@day1,@day2) + @daterange2 = Hotel::DatesRange.new(@day3,@day4) + @daterange3 = Hotel::DatesRange.new(@day2,@day5) + @daterange4 = Hotel::DatesRange.new(@day6,@day7) + @daterange5 = Hotel::DatesRange.new(@day6,@day5) + @daterange6 = Hotel::DatesRange.new(@day3,@day5) + @daterange7 = Hotel::DatesRange.new(@day3,@day6) + @daterange8 = Hotel::DatesRange.new(@day3,@day2) + @daterange9 = Hotel::DatesRange.new(@day1,@day7) end - it "returns true if the checkin is the same day as the checkout day" do - - end - it "returns false if the date range don't overlap" do + # daterange1 completely after daterange2 + @daterange1.overlap?(@daterange2).must_equal false + + # daterange1 completely before daterange3 + # daterange1 ends on the checkin date of daterange3 + @daterange1.overlap?(@daterange3).must_equal false end it "returns true if the dates ranges overlap" do - + # daterange1 is completely containing daterange4 + @daterange1.overlap?(@daterange4).must_equal true + + # daterange8 is completely containing daterange9 + @daterange8.overlap?(@daterange9).must_equal true + + # daterange1 completely contained in daterange6 + @daterange1.overlap?(@daterange6).must_equal true + + # daterange5 overlaps in the front with daterange1 + @daterange5.overlap?(@daterange1).must_equal true + + # daterange7 overlaps in the back with daterange1 + @daterange7.overlap?(@daterange1).must_equal true end - end#overlap + end end diff --git a/specs/reservation_specs.rb b/specs/reservation_specs.rb index 4656d50a1..ef3f2a8e8 100644 --- a/specs/reservation_specs.rb +++ b/specs/reservation_specs.rb @@ -29,7 +29,5 @@ @reservation_new.cost_reservation.must_equal 1400 @reservation_new.cost_reservation.must_be_kind_of Float end - - end end From c10b546fb7217f2ee6398c427aa5f4d8c11fffdb Mon Sep 17 00:00:00 2001 From: Brenda Rios Date: Fri, 30 Mar 2018 20:48:48 -0700 Subject: [PATCH 31/32] Design-activity file was created and answered. --- .DS_Store | Bin 0 -> 6148 bytes design-activity.md | 89 +++++++++++++++++++++++++++++++++++++++++++ lib/.DS_Store | Bin 0 -> 6148 bytes lib/rooms.rb | 19 --------- specs/.DS_Store | Bin 0 -> 6148 bytes specs/rooms_specs.rb | 45 ---------------------- 6 files changed, 89 insertions(+), 64 deletions(-) create mode 100644 .DS_Store create mode 100644 design-activity.md create mode 100644 lib/.DS_Store delete mode 100644 lib/rooms.rb create mode 100644 specs/.DS_Store delete mode 100644 specs/rooms_specs.rb diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c75c226378d6c324e2aea137e78056ce4d2dfec5 GIT binary patch literal 6148 zcmeH~O-=$q5QSd}CM0fHy6h`>g9*VCZ~+wwF(F_evYwsS_SKJOba3m!yh^IyP+irX z`4&?Y09(90-vM&~GrB9@eHokYyN~RuA`_~`8Am)~i_Lj;+>f#^2fTKMH4ZpqgF*f7 zu;1pnm|%w&Jo%}E=rvAwWz8C=A3K+CQd9&)Km;}O-fJ8E sf&OXCjdU*2imB0x`NLcB?I5rDGxxjFJ~hf2k8-O12sjs+2>bH1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Fri, 30 Mar 2018 20:51:02 -0700 Subject: [PATCH 32/32] Fixed the constants names as suggested in feedback. --- lib/booking.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/booking.rb b/lib/booking.rb index 8ef928c8d..63ff3fe35 100644 --- a/lib/booking.rb +++ b/lib/booking.rb @@ -1,7 +1,7 @@ module Hotel - Amount_Rooms_Hotel = 20 - Max_Block_Rooms = 5 + AMOUNT_ROOMS_HOTEL = 20 + MAX_BLOCKED_ROOMS = 5 class Booking @@ -14,7 +14,7 @@ def initialize end def setup_rooms - Amount_Rooms_Hotel.times do |num| + AMOUNT_ROOMS_HOTEL.times do |num| @rooms_list["#{num + 1}"] = [] end end @@ -65,7 +65,7 @@ def reservations_per_day(date) end def capacity_for_block_rooms?(checkin, checkout, num_rooms_to_block) - raise ArgumentError.new('The maximum of rooms to block is 5') if num_rooms_to_block > Max_Block_Rooms + raise ArgumentError.new('The maximum of rooms to block is 5') if num_rooms_to_block > MAX_BLOCKED_ROOMS return true if avaliable_rooms_daterange(checkin, checkout).length >= num_rooms_to_block return false end