def test_room_availability(): # Given room = Room(101, 2) date = datetime.utcnow() # When availability = room.is_available_this_day(date) # Then assert availability is True
def test_find_available_room_between_two_given_dates(): # Given room1 = Room(101, 2) room2 = Room(102, 2) room3 = Room(103, 2) rooms_in_hotel = [room1, room2, room3] hotel = Hotel(rooms_in_hotel) begining_booking_date = datetime(2019, 5, 3) end_booking_date = datetime(2019, 5, 5) room1_booked_date = datetime(2019, 5, 3) room2_booked_date = datetime(2019, 5, 5) room1.book(room1_booked_date) room2.book(room2_booked_date) # When available_rooms = hotel.find_available_rooms(begining_booking_date, end_booking_date) # Then assert len(available_rooms) == 2 assert room2 in available_rooms assert room1 not in available_rooms assert room3 in available_rooms
def test_room_booking(): # Given date = datetime.utcnow() room = Room(101, 2) room.book(date) # When availability = room.is_available_this_day(date) # Then assert availability is False
def test_hotel_has_specified_rooms(): # Given room1 = Room(101, 2) room2 = Room(102, 2) room3 = Room(103, 2) rooms_in_hotel = [room1, room2, room3] # When hotel = Hotel(rooms_in_hotel) # Then assert len(hotel.rooms) == 3 assert [room1, room2, room3] == hotel.rooms
def test_room_is_available_at_04042019(): # Given booked_date1 = datetime(2019, 4, 3) booked_date2 = datetime(2019, 4, 5) available_date = datetime(2019, 4, 4) room = Room(101, 2) room.book(booked_date1) room.book(booked_date2) # When availability = room.is_available_this_day(available_date) # Then assert availability is True
def load_rooms(self) -> List[Room]: rooms_data = self._read_json_file() rooms = [] for room_data in rooms_data["rooms"]: rooms.append(Room(**room_data)) return rooms
def test_build_hotel(): # Given room_101 = Room(101, room_capacity=2) room_102 = Room(102, room_capacity=4) rooms_repo = MagicMock() rooms_repo.load_rooms = MagicMock() rooms_repo.load_rooms.return_value = [room_101, room_102] hotel_service = HotelService(rooms_repo) # When hotel = hotel_service.build_hotel() # Then assert hotel.rooms == [room_101, room_102]
def test_find_available_room(): # Given room1 = Room(101, 2) room2 = Room(102, 2) rooms_in_hotel = [room1, room2] hotel = Hotel(rooms_in_hotel) booked_room1_date = datetime(2019, 5, 3) room1.book(booked_room1_date) # When available_rooms = hotel.find_available_rooms(booked_room1_date) # Then assert len(available_rooms) == 1 assert room2 in available_rooms
def test_find_available_room_with_capacity_superior_to_number_of_guests(): # Given room1 = Room(101, 4) room2 = Room(102, 2) number_of_guests = 3 rooms_in_hotel = [room1, room2] hotel = Hotel(rooms_in_hotel) checkin_date = datetime(2019, 5, 3) # When available_rooms = hotel.find_available_rooms( checkin_date, number_of_guests=number_of_guests) # Then assert available_rooms == [room1]
def test_checkin_range_is_greater_than_minimum_nights_stay(): # Given room101 = Room(101, 2) number_of_guests = 1 hotel = Hotel([room101]) checkin_date = datetime(2019, 6, 5) checkout_date = datetime(2019, 6, 5) # When Then with pytest.raises(Exception): assert hotel.find_available_rooms(checkin_date, checkout_date, number_of_guests=number_of_guests)
def test_find_available_rooms(): # Given checkin_date = datetime.strptime('2019-02-21', DATE_FORMAT) checkout_date = datetime.strptime('2019-02-23', DATE_FORMAT) number_of_guests = 2 room_101 = Room(101, room_capacity=2) room_102 = Room(102, room_capacity=4) room_103 = Room(103, room_capacity=1) room_104 = Room(104, room_capacity=2) hotel_cuzco = Hotel([room_101, room_102, room_103, room_104]) booked_room_102_date = datetime(2019, 2, 21) room_102.book(booked_room_102_date) booked_room_104_date = datetime(2019, 2, 7) room_104.book(booked_room_104_date) # When available_rooms = hotel_cuzco.find_available_rooms(checkin_date, checkout_date, number_of_guests) # Then assert available_rooms == [room_101, room_104]
def init_hotel(): room1 = Room(101) room2 = Room(102) room3 = Room(103) booked_date = datetime(2019, 6, 4) room2.book(booked_date) rooms_in_hotel = [room1, room2, room3] hotel = Hotel(rooms_in_hotel) return hotel
def test_book_a_room_for_3_nights(): # Given to_booked_room_number = 102 number_of_guests = 4 checkin_date = datetime(2019, 6, 1) checkout_date = datetime(2019, 6, 5) booking = Booking(to_booked_room_number, number_of_guests, checkin_date, checkout_date) room_101 = Room(101, room_capacity=2) room_102 = Room(102, room_capacity=4) hotel_cuzco = Hotel([room_101, room_102]) # When hotel_cuzco.book_room(booking) # Then assert not room_102.is_available_this_day(datetime(2019, 6, 3)) assert room_102.is_available_this_day(datetime(2019, 5, 31)) assert room_102.is_available_this_day(datetime(2019, 6, 5))