public void Get_Fidelity_Client_Lowest_Hotel_Price_With_Wee_And_Weekend_Days_Test() { // Arrange var input = new RequestLowestPriceDto( (int)ClientTypeEnum.Fidelity, new List <DateTime>(new DateTime[] { new DateTime(2020, 03, 26), //Thur new DateTime(2020, 03, 27), //Fri new DateTime(2020, 03, 28) }) //Sat ); var expected = "Mar Atlântico"; this._hotelRepository .Setup(x => x.GetHotels()) .Returns(SelectAllFromHotel()); // Act var hotelTest = new HotelService(this._hotelRepository.Object); var result = hotelTest.GetLowestPriceHotel(input); // Assert Assert.Equal(expected, result.HotelName); this._mocker.VerifyAll(); }
public void Get_Regular_Client_Lowest_Hotel_Price_With_Invalid_ClientType_Test() { // Arrange var input = new RequestLowestPriceDto( 0, new List <DateTime>(new DateTime[] { new DateTime(2020, 03, 16), new DateTime(2020, 03, 17), new DateTime(2020, 03, 18) }) ); this._hotelRepository .Setup(x => x.GetHotels()) .Returns(SelectAllFromHotel()); // Act var hotelTest = new HotelService(this._hotelRepository.Object); var result = hotelTest.GetLowestPriceHotel(input); // Assert Assert.Null(result); this._mocker.VerifyAll(); }
public void Get_Regular_Client_Lowest_Hotel_Price_With_3_Week_Days_Test() { // Arrange var input = new RequestLowestPriceDto( (int)ClientTypeEnum.Regular, new List <DateTime>(new DateTime[] { new DateTime(2020, 03, 16), //Mon new DateTime(2020, 03, 17), //Tues new DateTime(2020, 03, 18) }) //Wed ); var expected = "Parque das flores"; this._hotelRepository .Setup(x => x.GetHotels()) .Returns(SelectAllFromHotel()); // Act var hotelTest = new HotelService(this._hotelRepository.Object); var result = hotelTest.GetLowestPriceHotel(input); // Assert Assert.Equal(expected, result.HotelName); this._mocker.VerifyAll(); }
public void Get_Fidelity_Client_Lowest_Hotel_Price_With_Full_Week_Test() { // Arrange List <DateTime> days = new List <DateTime>(); for (int a = 6; a <= 12; a++) { days.Add(new DateTime(2020, 09, a)); } var input = new RequestLowestPriceDto((int)ClientTypeEnum.Fidelity, days); var expected = "Parque das flores"; this._hotelRepository .Setup(x => x.GetHotels()) .Returns(SelectAllFromHotel()); // Act var hotelTest = new HotelService(this._hotelRepository.Object); var result = hotelTest.GetLowestPriceHotel(input); // Assert Assert.Equal(expected, result.HotelName); this._mocker.VerifyAll(); }
public void Get_Regular_Client_Lowest_Hotel_Price_Without_Dates_Test() { // Arrange var input = new RequestLowestPriceDto( (int)ClientTypeEnum.Regular, null ); this._hotelRepository .Setup(x => x.GetHotels()) .Returns(SelectAllFromHotel()); // Act var hotelTest = new HotelService(this._hotelRepository.Object); var result = hotelTest.GetLowestPriceHotel(input); // Assert Assert.Null(result); this._mocker.VerifyAll(); }
public HotelEntity GetLowestPriceHotel(RequestLowestPriceDto request) { var hotels = _hotelRepository.GetHotels(); HotelEntity lowestHotel = null; if (request == null || !request.IsValide()) { return(null); } var weekDays = request.Dates.Where(x => !IsWeekEnd(x)).Count(); var weekendDays = request.Dates.Where(x => IsWeekEnd(x)).Count(); foreach (var hotel in hotels) { if (lowestHotel == null) { lowestHotel = hotel; continue; } var actualHotelDaily = hotel.DailyValue(weekDays, weekendDays, request.ClientType); var lowestHotelDaily = lowestHotel.DailyValue(weekDays, weekendDays, request.ClientType); if (actualHotelDaily == lowestHotelDaily) { lowestHotel = lowestHotel.Rating > hotel.Rating ? lowestHotel : hotel; } if (actualHotelDaily < lowestHotelDaily) { lowestHotel = hotel; } } return(lowestHotel); }