public async Task <ActionResult> PostTransfer([FromBody] ContaTransferenciaDtoCreate transferencia) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); // 400 bad request } return(Ok(await _service.PostTransfer(transferencia))); } catch (ArgumentException ex) { return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message)); } }
public async Task PostTransferCreated() { var serviceMock = new Mock <IContaService>(); serviceMock.Setup(m => m.PostTransfer(It.IsAny <ContaTransferenciaDtoCreate>())).ReturnsAsync(true); _controller = new ContasController(serviceMock.Object); var transferDtoCreate = new ContaTransferenciaDtoCreate { ContaIdOrigem = Guid.NewGuid(), ContaIdDestino = Guid.NewGuid(), ValorTransferencia = 100 }; var result = await _controller.PostTransfer(transferDtoCreate); Assert.True(result is OkObjectResult); }
public async Task PostTransferBadRequest() { var serviceMock = new Mock <IContaService>(); serviceMock.Setup(m => m.PostTransfer(It.IsAny <ContaTransferenciaDtoCreate>())).ReturnsAsync(true); _controller = new ContasController(serviceMock.Object); _controller.ModelState.AddModelError("Id", "Formato Inválido"); var transferDtoCreate = new ContaTransferenciaDtoCreate { ContaIdOrigem = Guid.NewGuid(), ContaIdDestino = Guid.NewGuid(), ValorTransferencia = 100 }; var result = await _controller.PostTransfer(transferDtoCreate); Assert.True(result is BadRequestObjectResult); }
public async Task <bool> PostTransfer(ContaTransferenciaDtoCreate transferencia) { var contaOrigem = await _repository.SelectAsync(transferencia.ContaIdOrigem); if (contaOrigem == null) { throw new Exception("Conta do remetente não encontrada!"); } var contaDestino = await _repository.SelectAsync(transferencia.ContaIdDestino); if (contaDestino == null) { throw new Exception("Conta de destino não encontrada!"); } contaOrigem.Balance -= transferencia.ValorTransferencia; contaDestino.Balance += transferencia.ValorTransferencia; LancamentoEntity lancamentoDebito = new LancamentoEntity(); LancamentoEntity lancamentoCredito = new LancamentoEntity(); lancamentoDebito.Id = Guid.NewGuid(); lancamentoDebito.ContaId = contaOrigem.Id; lancamentoDebito.Value = transferencia.ValorTransferencia; lancamentoDebito.Description = $"Transfência entre contas - CC Destino: {contaDestino.Id} R$: {transferencia.ValorTransferencia}"; lancamentoCredito.Id = Guid.NewGuid(); lancamentoCredito.ContaId = contaDestino.Id; lancamentoCredito.Value = transferencia.ValorTransferencia; lancamentoCredito.Description = $"Transfência entre contas - CC Origem: {contaOrigem.Id} R$: {transferencia.ValorTransferencia}"; var result = await _repository.InsertTransfer(contaOrigem, contaDestino, lancamentoDebito, lancamentoCredito); return(result); }