public async Task <IEnumerable <PhotoResource> > GetPhotos([FromQuery] PhotoQueryResource filterResource) { var filter = mapper.Map <PhotoQueryResource, PhotoQuery>(filterResource); var photos = await this.photoRepository.GetPhotos(filter); var photoResources = mapper.Map <IEnumerable <Photo>, IEnumerable <PhotoResource> >(photos); photoResources = photoResources.Select(res => { string orgFilePath = res.FilePath; res.FilePath = string.Format("{0}/{1}", this.uploadsFolderUrl, orgFilePath); res.BoundingBoxFilePath = string.Format("{0}/{1}", this.outputFolderUrl, orgFilePath); res.TotalComments = res.Comments.Count(); ((List <CommentResource>)res.Comments).Clear(); return(res); }); return(photoResources); }
public async Task GetPhotos() { // Arrange var seedPhotos = SeedPhotos(); var seedPhotoResources = this._mapper.Map <IEnumerable <Photo>, IEnumerable <PhotoResource> >(seedPhotos); var filterResource = new PhotoQueryResource(); var mockPhotoRepository = new Mock <IPhotoRepository>(); var mockCommentRepository = new Mock <ICommentRepository>(); mockPhotoRepository.Setup(m => m.GetPhotos(It.IsAny <PhotoQuery>())).ReturnsAsync(seedPhotos); var mockCategoryRepository = new Mock <ICategoryRepository>(); var mockUserRepository = new Mock <IUserRepository>(); var mockAlbumRepository = new Mock <IAlbumRepository>(); var mockUnitOfWork = new Mock <IUnitOfWork>(); var mockPhotoUploadService = new Mock <IPhotoUploadService>(); var mockHost = new Mock <IWebHostEnvironment>(); mockHost.SetupGet(m => m.WebRootPath).Returns(string.Empty); var mockObjectDetectionService = new Mock <IObjectDetectionService>(); PhotosController controller = new PhotosController(this._mapper, mockPhotoRepository.Object, mockCategoryRepository.Object, mockUserRepository.Object, mockCommentRepository.Object, mockAlbumRepository.Object, mockUnitOfWork.Object, mockPhotoUploadService.Object, mockHost.Object, mockObjectDetectionService.Object); seedPhotoResources = seedPhotoResources.Select(p => { p.BoundingBoxFilePath = string.Format("{0}/{1}", controller.OutputFolderUrl, p.FilePath); p.FilePath = string.Format("{0}/{1}", controller.UploadFolderUrl, p.FilePath); return(p); }); // Act var photos = await controller.GetPhotos(filterResource); // Assert Assert.True(seedPhotoResources.SequenceEqual(photos)); }