Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }