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