Ejemplo n.º 1
0
        public async Task <string> Handle(GetResizedFileByIdQuery request, CancellationToken cancellationToken)
        {
            var criteria          = new ImageResizeCriteria(request.ImageId, request.Query);
            var criteriaValidator = new ImageResizeCriteriaValidator(_configuration);

            Guard.AgainstInvalidArgumentWithMessage("Invalid criteria", criteriaValidator.ValidCriteria(criteria));

            (int?width, int?height)widthHeightPair = criteriaValidator.GetCriteria(criteria);

            var fileDtos = await _fileReadRepository.GetAllImageOfIdAsync(request.ImageId, widthHeightPair.width, widthHeightPair.height);

            Guard.AgainstNullOrNotAny(Constants.File, fileDtos);

            BaseFileDto fileFound;

            fileFound = fileDtos.FirstOrDefault(file => (widthHeightPair.width == null || file.Width == widthHeightPair.width) &&
                                                (widthHeightPair.height == null || file.Height == widthHeightPair.height) && !criteria.Empty);
            if (fileFound != null)
            {
                return(fileFound.FilePath);
            }

            BaseFileDto originalFile = fileDtos.FirstOrDefault(file => file.Id == criteria.ImageId);

            Guard.AgainstNull(Constants.OriginalFile, originalFile);

            bool shoudResize = _imageService.ShouldResize(((int)originalFile.Width, (int)originalFile.Height), widthHeightPair);

            if (criteria.Empty || !shoudResize)
            {
                fileFound = originalFile;
            }

            return(fileFound?.FilePath);
        }
Ejemplo n.º 2
0
        public async Task Handle_GetFileByIdQuerySuccessfully_WhenFileIdIsValid()
        {
            // Arrange
            _fileReadRepositoryMock.Setup(f => f.QuerySingleOrDefaultAsync <BaseFileDto>(It.IsAny <string>(), It.IsAny <object>())).ReturnsAsync(new BaseFileDto()
            {
                Id = 1, FilePath = "file_path/file_name.jpg"
            });

            // Act
            BaseFileDto baseFileDto = await _handler.Handle(new GetFileByIdQuery(1), CancellationToken.None);

            // Assert
            Assert.Equal(1, baseFileDto.Id);
            Assert.Equal("file_path/file_name.jpg", baseFileDto.FilePath);
        }
        public async Task Api_ShouldGetFileByIdSuccessfullly()
        {
            // arrange
            var file = new BaseFileDto()
            {
                Id = 1, FilePath = "file_path/file_name.jpg"
            };

            _mediator.Setup(f => f.Send(It.IsAny <GetFileByIdQuery>(), CancellationToken.None))
            .ReturnsAsync(file);

            // act
            var controller = new FileController(_mediator.Object, _configuration.Object, _mimeTypeFactory.Object);
            var result     = await controller.GetFileById((int)file.Id);

            // assert
            _mediator.Verify(sender => sender.Send(It.IsAny <GetFileByIdQuery>(), CancellationToken.None), Times.Once);
            Assert.Equal(result.FilePath, file.FilePath);
        }