public async Task HandleAsync_Should_Return_CollectionOutputQuery_With_FlatForRentAnnouncementOutputQuery_When_Input_Is_Not_Null() { var flatForRentAnnouncement = FlatForRentAnnouncement.Builder() .SetId(Guid.NewGuid()) .SetTitle("Title") .SetSourceUrl("http://source") .SetCityId(Guid.NewGuid()) .SetCreated(DateTimeOffset.UtcNow) .SetDescription("Description") .SetNumberOfRooms(NumberOfRoomsEnumeration.One) .SetPrice(1000) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); var flatForRentAnnouncements = new List <FlatForRentAnnouncement> { flatForRentAnnouncement }; var forRentAnnouncementOutputQueries = flatForRentAnnouncements.Select(x => new FlatForRentAnnouncementOutputQuery(x.Id, x.Title, x.SourceUrl, x.CityId, x.Created, x.Description, x.Price, x.NumberOfRooms, x.CityDistricts)).ToList(); var flatForRentAnnouncementsInputQuery = new GetFlatForRentAnnouncementsInputQuery(1, 100, "price:asc", null, null, null, null, null, null, null); var collectionOutputQuery = new CollectionOutputQuery <FlatForRentAnnouncementOutputQuery>(forRentAnnouncementOutputQueries.Count, forRentAnnouncementOutputQueries); _flatForRentAnnouncementRepositoryMock .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 <NumberOfRoomsEnumeration>())) .ReturnsAsync(flatForRentAnnouncements); _flatForRentAnnouncementRepositoryMock.Setup(x => x.CountAsync(It.IsAny <Guid?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <decimal?>(), It.IsAny <decimal?>(), It.IsAny <Guid?>(), It.IsAny <NumberOfRoomsEnumeration>())).ReturnsAsync(flatForRentAnnouncements.Count); _mapperMock .Setup(x => x.Map <List <FlatForRentAnnouncement>, IEnumerable <FlatForRentAnnouncementOutputQuery> >(It.IsAny <List <FlatForRentAnnouncement> >())) .Returns(forRentAnnouncementOutputQueries); var result = await _queryHandler.HandleAsync(flatForRentAnnouncementsInputQuery); result.Should().BeEquivalentTo(collectionOutputQuery); }
public async Task <CollectionOutputQuery <FlatForRentAnnouncementOutputQuery> > HandleAsync(GetFlatForRentAnnouncementsInputQuery inputQuery, CancellationToken cancellationToken = default) { List <FlatForRentAnnouncement> flatForRentAnnouncements; long totalCount; if (inputQuery != null) { var findTask = _flatForRentAnnouncementRepository.FindAsync(inputQuery.Page, inputQuery.PageSize, inputQuery.Sort, inputQuery.CityId, inputQuery.CreatedFrom, inputQuery.CreatedTo, inputQuery.PriceFrom, inputQuery.PriceTo, inputQuery.CityDistrict, inputQuery.NumberOfRooms); totalCount = await _flatForRentAnnouncementRepository.CountAsync(inputQuery.CityId, inputQuery.CreatedFrom, inputQuery.CreatedTo, inputQuery.PriceFrom, inputQuery.PriceTo, inputQuery.CityDistrict, inputQuery.NumberOfRooms); flatForRentAnnouncements = await findTask; } else { var getAllTask = _flatForRentAnnouncementRepository.GetAllAsync(); totalCount = await _flatForRentAnnouncementRepository.CountAsync(); flatForRentAnnouncements = await getAllTask; } var results = _mapper.Map <List <FlatForRentAnnouncement>, IEnumerable <FlatForRentAnnouncementOutputQuery> >(flatForRentAnnouncements); return(new CollectionOutputQuery <FlatForRentAnnouncementOutputQuery>(totalCount, results)); }