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