public void Compare_If_Is_Cheaper_Than_Another_Hotel_In_Weekend_Day_For_Regular_Costumer() { HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Regular, new DateTime(2019, 09, 14), new DateTime(2019, 09, 15)); bool bridgewoodIsCheaperThanLakewood = bridgewood.IsCheaperThan(lakewood, hotelSearchCriteria); Assert.IsTrue(bridgewoodIsCheaperThanLakewood); }
public void Compare_If_Is_Cheaper_Than_Another_Hotel_In_Week_Day_For_Reward_Costumer() { HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Reward, new DateTime(2019, 09, 09), new DateTime(2019, 09, 13)); bool lakewoodIsCheaperThanRidgewood = lakewood.IsCheaperThan(ridgewood, hotelSearchCriteria); Assert.IsTrue(lakewoodIsCheaperThanRidgewood); }
public void Find_The_Cheapest_Hotel_For_Week_Day_To_Regular_Costumer() { HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Regular, new DateTime(2019, 09, 09), new DateTime(2019, 09, 13)); string hotel = findTheCheapestHotel.Do(hotelSearchCriteria); Assert.AreEqual("Lakewood", hotel); }
public void Compare_If_Is_Cheaper_Than_Another_Hotel_Considering_The_Hotel_Rating_When_There_Is_A_Tie_On_Rate() { HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Reward, new DateTime(2019, 09, 14), new DateTime(2019, 09, 15)); bool ridgewoodIsCheaperThanSeawood = ridgewood.IsCheaperThan(seawood, hotelSearchCriteria); Assert.IsTrue(ridgewoodIsCheaperThanSeawood); }
public void Find_The_Cheapest_Hotel_For_Weekend_Day_To_Reward_Costumer() { HotelSearchCriteria hotelSearchCriteria = CreateHotelSearchCriteria(CostumerType.Reward, new DateTime(2019, 09, 14), new DateTime(2019, 09, 15)); string hotel = findTheCheapestHotel.Do(hotelSearchCriteria); Assert.AreEqual("Ridgewood", hotel); }
public void Create_Itself_From_Serialized_Of_Reward_Costumer() { string serializedCriteria = "Reward: 13Sep2019(Fri),14Sep2019(Sat)"; HotelSearchCriteria hotelSearchCriteria = HotelSearchCriteria.CreateFromSerializedCriteria(serializedCriteria); Assert.AreEqual(CostumerType.Reward, hotelSearchCriteria.CostumerType); Assert.AreEqual(new DateTime(2019, 09, 13), hotelSearchCriteria.Dates.ElementAt(0)); Assert.AreEqual(new DateTime(2019, 09, 14), hotelSearchCriteria.Dates.ElementAt(1)); }
public async Task TestNoHotelsReturnedWhenNonMatchingCriteria() { HotelSearchCriteria criteria = new HotelSearchCriteria() { Rating = "1", Name = "zXRT" }; ActionResult <IEnumerable <Hotel> > response = await _controller.SearchHotels(criteria); var result = response.Result as OkObjectResult; var data = result.Value as IEnumerable <Hotel>; Assert.IsNotNull(result); Assert.AreEqual(result.StatusCode, (int)HttpStatusCode.OK); Assert.AreEqual(data.Count(), 0); }
public async Task <ActionResult <IEnumerable <Hotel> > > SearchHotels([FromBody] HotelSearchCriteria criteria) { var data = await _hotelsRepository.getHotels(); if (HotelSearchCriteria.HasCriteria(criteria)) { Func <HotelDto, bool> nameCriteria = e => string.IsNullOrWhiteSpace(criteria.Name) || (!string.IsNullOrWhiteSpace(e.name) && e.name.ToLower().Contains(criteria.Name.ToLower())); Func <HotelDto, bool> ratingCriteria = e => !criteria.RatingFilter.HasValue || (criteria.RatingFilter.Value == e.rating); data = data.Where(r => nameCriteria(r) && ratingCriteria(r)); } var hotels = data.Select(r => this._mapper.Map <Hotel>(r)).ToList(); return(Ok(hotels)); }
public async Task TestGetFilterMatchingRatingHotels() { HotelSearchCriteria criteria = new HotelSearchCriteria() { Rating = "1" }; ActionResult <IEnumerable <Hotel> > response = await _controller.SearchHotels(criteria); var result = response.Result as OkObjectResult; var data = result.Value as IEnumerable <Hotel>; Assert.IsNotNull(result); Assert.AreEqual(result.StatusCode, (int)HttpStatusCode.OK); var matching = Hotels.Where(r => r.rating == float.Parse(criteria.Rating)).ToList(); Assert.AreEqual(data.Count(), matching.Count()); }
public async Task TestGetFilterMatchingNamedHotels() { HotelSearchCriteria criteria = new HotelSearchCriteria() { Name = "N" }; ActionResult <IEnumerable <Hotel> > response = await _controller.SearchHotels(criteria); var result = response.Result as OkObjectResult; var data = result.Value as IEnumerable <Hotel>; Assert.IsNotNull(result); Assert.AreEqual(result.StatusCode, (int)HttpStatusCode.OK); var matching = Hotels.Where(r => r.name.ToLower().Contains(criteria.Name.ToLower())).ToList(); Assert.AreEqual(data.Count(), matching.Count()); }
public async Task <List <Hotel> > GetHotels(HotelSearchCriteria hotelSearchCriteria) { var request = new HttpRequestMessage(HttpMethod.Get, $"http://localhost:62564/api/hotel/search" + $"?Destination={hotelSearchCriteria.Destination}&Children={hotelSearchCriteria.Children}" + $"&Adults={hotelSearchCriteria.Adults}"); request.Headers.Add("Accept", "application/vnd.github.v3+json"); request.Headers.Add("User-Agent", "PackageSearch"); HttpResponseMessage response = await _httpClient.SendAsync(request); if (response.IsSuccessStatusCode) { return(JsonConvert.DeserializeObject <List <Hotel> >(await response.Content.ReadAsStringAsync())); } else { throw new Exception("no hotels found for " + hotelSearchCriteria.ToString()); } //_httpClient. }
public async Task <IEnumerable <HotelDto> > getHotelsByCriteria(HotelSearchCriteria criteria) { if (HotelSearchCriteria.HasCriteria(criteria)) { IEnumerable <HotelDto> data = await LoadHotels(); if (!string.IsNullOrWhiteSpace(criteria.Name)) { data = data.Where(r => !string.IsNullOrWhiteSpace(r.name) && r.name.ToLower().Contains(criteria.Name.ToLower())); } if (criteria.RatingFilter.HasValue) { data = data.Where(r => r.rating == criteria.RatingFilter); } return(await Task.FromResult(data)); } else { return(await LoadHotels()); } }
public async Task <List <Package> > GetPackages(PackageSearchCriteria packageSearch) { HotelSearchCriteria hsc = new HotelSearchCriteria() { Adults = packageSearch.Adults, Children = packageSearch.Children, Destination = packageSearch.Destination }; FlightSearchCriteria fsc = new FlightSearchCriteria() { Origin = packageSearch.Origin, Destination = packageSearch.Destination, Adults = packageSearch.Adults, Children = packageSearch.Children, DepartureDate = packageSearch.DepartureDate.Value.Date, ArrivalDate = packageSearch.ArrivalDate.Value.Date }; var hotels = await _httpClientService.GetHotels(hsc); var flights = await _httpClientService.GetFlights(fsc); var packages = hotels .SelectMany(hotel => flights, (hotel, flight) => new Package { Flight = flight, Hotel = hotel }) .ToList(); return(packages); }
public string Do(string serializedCriteria) { IHotelSearchCriteria hotelSearchCriteria = HotelSearchCriteria.CreateFromSerializedCriteria(serializedCriteria); return(FindTheCheapestHotel.Do(hotelSearchCriteria)); }
public string FindTheCheapestHotel(string criteria) { return(HotelService.FindTheCheapestHotel(HotelSearchCriteria.CreateFromSerializedCriteria(criteria))); }