public async Task Create_TransferNonExistingAccount_ShouldReturnNotFound()
        {
            var request = new TransferCreateRequest
            {
                AccountId           = 1,
                Ammount             = 100,
                CustomerId          = 2,
                Details             = "Test",
                RecipientAccountId  = 20,
                RecipientCustomerId = 10
            };

            _mockMediator
            .Setup(m => m.Send(It.Is <TransferCreateRequest>(t => t.AccountId == request.AccountId &&
                                                             t.Ammount == request.Ammount &&
                                                             t.CustomerId == request.CustomerId &&
                                                             t.Details == request.Details &&
                                                             t.RecipientAccountId == request.RecipientAccountId &&
                                                             t.RecipientCustomerId == request.RecipientCustomerId), default))
            .ThrowsAsync(new NotFoundException())
            .Verifiable();

            var controller = new TransferController(_mockMediator.Object);

            var result = await controller.Create(request);

            _mockMediator.Verify();

            Assert.True(typeof(NotFoundObjectResult) == result.Result.GetType());
        }
 private List <TransactionModel> TransferTransactions(TransferCreateRequest request)
 {
     return(new List <TransactionModel>
     {
         new TransactionModel
         {
             AccountId = request.AccountId.Value,
             Ammount = -request.Ammount,
             Date = DateTime.Now,
             Details = request.Details,
             OperationId = 1,
             TransactionTypeId = 3
         },
         new TransactionModel
         {
             AccountId = request.AccountId.Value,
             Ammount = -1,
             Date = DateTime.Now,
             Details = request.Details,
             OperationId = 1,
             TransactionTypeId = 3
         },
         new TransactionModel
         {
             AccountId = request.RecipientAccountId,
             Ammount = request.Ammount,
             Date = DateTime.Now,
             Details = request.Details,
             OperationId = 1,
             TransactionTypeId = 3
         }
     });
 }
示例#3
0
        public async Task Handle_CreateTransferSameAccount_ShouldReturnBusinessException()
        {
            var handler = new TransferCreateHandler(_mockMediator.Object, _mockRepo.Object);

            var request = new TransferCreateRequest {
                AccountId = 1, CustomerId = 1, Ammount = 100, RecipientAccountId = 1, RecipientCustomerId = 2
            };

            await Assert.ThrowsAsync <BusinessException>(() => handler.Handle(request, default));
        }
        public async Task <ActionResult <IEnumerable <TransactionModel> > > Create([FromBody, Required] TransferCreateRequest request)
        {
            try
            {
                var result = await _mediator.Send(request);

                return(CreatedAtAction(nameof(Create), result));
            }
            catch (BusinessException businessException)
            {
                return(Conflict(new { message = businessException.Message }));
            }
            catch (NotFoundException notFoundException)
            {
                return(NotFound(new { message = notFoundException.Message }));
            }
        }
示例#5
0
        public async Task Handle_CreateTransferNegativeBalance_ShouldReturnBusinessException()
        {
            var handler = new TransferCreateHandler(_mockMediator.Object, _mockRepo.Object);

            var request = new TransferCreateRequest {
                AccountId = 1, CustomerId = 1, Ammount = 200, RecipientAccountId = 2, RecipientCustomerId = 2
            };
            var accountFrom = GetTestFromAccount();

            _mockMediator
            .Setup(m => m.Send(It.Is <AccountGetRequest>(a => a.AccountId == accountFrom.Id), default))
            .Returns(Task.FromResult(accountFrom))
            .Verifiable();

            MockTransferTransactionType();

            await Assert.ThrowsAsync <BusinessException>(() => handler.Handle(request, default));

            _mockMediator.Verify();
        }
示例#6
0
        public async Task Handle_CreateTransfer_ShouldReturnTransaction()
        {
            var handler = new TransferCreateHandler(_mockMediator.Object, _mockRepo.Object);

            var request = new TransferCreateRequest {
                AccountId = 1, CustomerId = 1, Ammount = 10, RecipientAccountId = 2, RecipientCustomerId = 2
            };
            var accountFrom  = GetTestFromAccount();
            var accountTo    = GetTestToAccount();
            var transferType = GetTransferType();

            var transferTransactions = handler.BuildTransferTransactions(request, accountFrom, accountTo, transferType);

            MockTransferTransactionType();
            MockMediator(transferTransactions, accountFrom, accountTo);

            var result = await handler.Handle(request, default);

            _mockMediator.Verify();
            Assert.IsAssignableFrom <IEnumerable <TransactionModel> >(result);
            Assert.Equal(3, result.Count());
        }