public async Task Handle_WithValidParams_ShouldReturnSuccess() { #region Arrange var transactionRepositoryMock = new Mock <ITransactionRepository>(); var xmlTransactionDxoMock = new Mock <XmlTransactionDxo>(); var mediatorMock = new Mock <IMediator>(); var xmlTransactionServiceMock = new Mock <IXmlTransactionService>(); await using var stream = new MemoryStream(); var writer = XmlWriter.Create(stream); var saveXmlCommand = new SaveXmlCommand(stream); #endregion #region Act var sut = new SaveXmlCommandHandler(transactionRepositoryMock.Object, xmlTransactionDxoMock.Object, mediatorMock.Object, xmlTransactionServiceMock.Object); var Result = await sut.Handle(saveXmlCommand, CancellationToken.None); #endregion #region Assert Assert.False(Result.IsDefault()); #endregion }
public static TryAsync <XmlTransactionModel> GetXmlTransactionModel(this SaveXmlCommand command) { return(TryAsync(() => { using TextReader reader = new StreamReader(command.Stream); XmlSerializer serializer = new XmlSerializer(typeof(XmlTransactionModel)); return ((XmlTransactionModel)serializer.Deserialize(reader)).AsTask(); })); }
public Task <EitherAsync <Error, Unit> > Handle(SaveXmlCommand request, CancellationToken cancellationToken) { return(_xmlTransactionService.GetXmlTransactionModel(request) .Bind(xmlTransactionModel => _xmlTransactionDxo.MapTransaction(xmlTransactionModel)) .Bind(transactions => _transactionRepository.CreateAsync(transactions)) .Bind(transactions => _transactionRepository.SaveAsync()) .Match(EitherAsync <Error, Unit> .Right, error => { _mediator.Publish(SaveXmlFailedEvent.CreateInstance(error.Message), cancellationToken).ToUnit(); return EitherAsync <Error, Unit> .Left(error); })); }
public Task <IActionResult> SaveXml(IFormFile formFile) { return(TryOptionAsync(formFile .ToSome() .Filter(file => file.ContentType != "text/xml") .Reduce((file, file1) => file) .Apply(file => CommandAsync(SaveXmlCommand.CreateInstance(file.OpenReadStream())))) .MapT(unit1 => Ok()) .Match(Some: (some) => { return some.Match(unit1 => unit1, error => (IActionResult)BadRequest(error)); }, None: () => ((IActionResult)UnprocessableEntity("Unknown format")).AsTask(), Fail: (error) => ((IActionResult)BadRequest(error.Message)).AsTask()) .Bind(task => task)); }
public TryAsync <XmlTransactionModel> GetXmlTransactionModel(SaveXmlCommand command) { return(command.GetXmlTransactionModel()); }