Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #7
0
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]
Beispiel #8
0
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
Beispiel #9
0
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]
Beispiel #10
0
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)
Beispiel #11
0
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]
Beispiel #12
0
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
Beispiel #13
0
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))