public IReadOnlyCollection <RoomData> SearchByFilter(RoomRequirements roomRequirements) { var roomsSelectionPipeline = new RoomsSelectionPipeline(); roomsSelectionPipeline.Register(new RoomPriceFromFilter(roomRequirements.PriceFrom)) .Register(new RoomPriceToFilter(roomRequirements.PriceTo)) .Register(new RoomCapacityFilter(roomRequirements.RequiredCapacity)) .Register(new RoomAvailabilityFilter(roomRequirements.CheckIn, roomRequirements.CheckOut, context.Orders.ToList())); return(Map(roomsSelectionPipeline.Process(context.Rooms.Where(room => room.HotelId == roomRequirements.HotelId) .ToList()))); }
public void SearchByFiltersTest() { RoomRequirements roomRequirements = CreateRoomRequirements(); IReadOnlyCollection <RoomData> expected = CreateRoomCollection(); SetupRoomRepositorySearchByFiltersMock(roomRequirements, expected); IReadOnlyCollection <RoomData> actual = roomService.SearchByFilters(roomRequirements); Assert.AreEqual(expected, actual); }
public void SearchTest() { RoomRequirements roomRequirements = CreateRoomRequirements(); IReadOnlyCollection <RoomData> roomsData = CreateRoomsData(); SetupHotelServiceGetSearchResultMock(roomsData, roomRequirements); var actual = (JsonResult)roomApiController.Search(roomRequirements); Assert.AreEqual(roomsData, actual.Value); }
public IActionResult Search(RoomRequirements roomRequirements) => Json(roomService.SearchByFilters(roomRequirements));
private void SetupRoomRepositorySearchByFiltersMock(RoomRequirements roomRequirements, IReadOnlyCollection <RoomData> roomDatas) => roomRepositoryMock .Setup(repository => repository.SearchByFilter(roomRequirements)) .Returns(roomDatas);
private void SetupHotelServiceGetSearchResultMock(IReadOnlyCollection <RoomData> roomsData, RoomRequirements roomRequirements) => roomServiceMock .Setup(service => service.SearchByFilters(roomRequirements)) .Returns(roomsData);
public IReadOnlyCollection <RoomData> SearchByFilters(RoomRequirements roomRequirements) { return(roomRepository.SearchByFilter(roomRequirements)); }
public HotelsRoomFilter(RoomRequirements roomRequirements, IReadOnlyCollection <Room> rooms, IReadOnlyCollection <Order> orders) { this.roomRequirements = roomRequirements; this.rooms = rooms; this.orders = orders; }