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); }
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); }