コード例 #1
0
        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
        }
コード例 #2
0
 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();
     }));
 }
コード例 #3
0
 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);
     }));
 }
コード例 #4
0
 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));
 }
コード例 #5
0
 public TryAsync <XmlTransactionModel> GetXmlTransactionModel(SaveXmlCommand command)
 {
     return(command.GetXmlTransactionModel());
 }