public async Task HandleAsync_Should_Return_CollectionOutputQuery_With_RoomForRentAnnouncementOutputQuery_When_Input_Is_Not_Null() { var roomForRentAnnouncement = RoomForRentAnnouncement.Builder() .SetId(Guid.NewGuid()) .SetTitle("Title") .SetSourceUrl("http://source") .SetCityId(Guid.NewGuid()) .SetCreated(DateTimeOffset.UtcNow) .SetDescription("Description") .SetPrice(1000) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .SetRoomTypes(new [] { RoomTypeEnumeration.Double }) .Build(); var roomForRentAnnouncements = new List <RoomForRentAnnouncement> { roomForRentAnnouncement }; var roomForRentAnnouncementOutputQueries = roomForRentAnnouncements.Select(x => new RoomForRentAnnouncementOutputQuery(x.Id, x.Title, x.SourceUrl, x.CityId, x.Created, x.Description, x.Price, x.RoomTypes, x.CityDistricts)).ToList(); var roomForRentAnnouncementsInputQuery = new GetRoomForRentAnnouncementsInputQuery(1, 100, "price:asc", null, null, null, null, null, null, null); var collectionOutputQuery = new CollectionOutputQuery <RoomForRentAnnouncementOutputQuery>(roomForRentAnnouncementOutputQueries.Count, roomForRentAnnouncementOutputQueries); _roomForRentAnnouncementRepositoryMock .Setup(x => x.FindAsync(It.IsAny <int?>(), It.IsAny <int?>(), It.IsAny <string>(), It.IsAny <Guid?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <decimal?>(), It.IsAny <decimal?>(), It.IsAny <Guid?>(), It.IsAny <RoomTypeEnumeration>())) .ReturnsAsync(roomForRentAnnouncements); _roomForRentAnnouncementRepositoryMock .Setup(x => x.CountAsync(It.IsAny <Guid?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <decimal?>(), It.IsAny <decimal?>(), It.IsAny <Guid?>(), It.IsAny <RoomTypeEnumeration>())) .ReturnsAsync(roomForRentAnnouncements.Count); _mapperMock .Setup(x => x.Map <List <RoomForRentAnnouncement>, IEnumerable <RoomForRentAnnouncementOutputQuery> >(It.IsAny <List <RoomForRentAnnouncement> >())) .Returns(roomForRentAnnouncementOutputQueries); var result = await _queryHandler.HandleAsync(roomForRentAnnouncementsInputQuery); result.Should().BeEquivalentTo(collectionOutputQuery); }
public async Task <CollectionOutputQuery <RoomForRentAnnouncementOutputQuery> > HandleAsync(GetRoomForRentAnnouncementsInputQuery inputQuery, CancellationToken cancellationToken = default) { List <RoomForRentAnnouncement> roomForRentAnnouncements; long totalCount; if (inputQuery != null) { var findTask = _roomForRentAnnouncementRepository.FindAsync(inputQuery.Page, inputQuery.PageSize, inputQuery.Sort, inputQuery.CityId, inputQuery.CreatedFrom, inputQuery.CreatedTo, inputQuery.PriceFrom, inputQuery.PriceTo, inputQuery.CityDistrict, inputQuery.RoomType); totalCount = await _roomForRentAnnouncementRepository.CountAsync(inputQuery.CityId, inputQuery.CreatedFrom, inputQuery.CreatedTo, inputQuery.PriceFrom, inputQuery.PriceTo, inputQuery.CityDistrict, inputQuery.RoomType); roomForRentAnnouncements = await findTask; } else { var getAllTask = _roomForRentAnnouncementRepository.GetAllAsync(); totalCount = await _roomForRentAnnouncementRepository.CountAsync(); roomForRentAnnouncements = await getAllTask; } var results = _mapper.Map <List <RoomForRentAnnouncement>, IEnumerable <RoomForRentAnnouncementOutputQuery> >(roomForRentAnnouncements); return(new CollectionOutputQuery <RoomForRentAnnouncementOutputQuery>(totalCount, results)); }