public void Instance_Implement_Interface_IHaveAccommodationId()
        {
            //Arrange
            var providerMock = new Mock <IProvider>();

            //Act
            var query = new GetRoomPhotosByAccommodationId(providerMock.Object);

            //Assert
            Assert.IsInstanceOf <IHaveAccommodationId>(query);
        }
        public void Instance_Implement_Interface_IQuery()
        {
            //Arrange
            var type         = typeof(IQuery <IEnumerable <RoomPhoto> >);
            var providerMock = new Mock <IProvider>();

            //Act
            var query = new GetRoomPhotosByAccommodationId(providerMock.Object);

            //Assert
            Assert.IsInstanceOf(type, query);
        }
示例#3
0
        public void HandleAsync()
        {
            //Arrange
            var ownerMock     = new Mock <IHavePropertyQueryable <PhotoOfAccommodation> >();
            var projectorMock = new Mock <IProjection>();

            var handler = new RoomPhotosByAccommodationId(ownerMock.Object, projectorMock.Object);

            var providerMock = new Mock <IProvider>();
            var query        = new GetRoomPhotosByAccommodationId(providerMock.Object);

            //Act
            var result = handler.HandleAsync(query, default(CancellationToken));

            //Assert
            Assert.IsInstanceOf <Task <IEnumerable <RoomPhoto> > >(result);
        }
        protected IQueryable <RoomPhoto> ProjectionToRoomPhotos(IQueryable <PhotoOfAccommodation> photosOfAccommodations, GetRoomPhotosByAccommodationId query, IProjection projector)
        {
            var photosOfRooms = Source.SelectMany(p => p.ToTypesOfRooms).Select(p => p.Id);

            photosOfAccommodations = photosOfAccommodations
                                     .Include(p => p.ToTypesOfRooms)
                                     .Where(p => p.AccommodationId == query.AccommodationId)
                                     .Where(p => photosOfRooms.Contains(p.Id));

            return(projector.ProjectTo <RoomPhoto>(photosOfAccommodations));
        }
 public override async Task <IEnumerable <RoomPhoto> > HandleAsync(GetRoomPhotosByAccommodationId query, CancellationToken cancellationToken)
 {
     return(await ProjectionToRoomPhotos(Source, query, Projector).ToArrayAsync(cancellationToken));
 }