public async Task DadaUmaContaAPagarEOPagamentoDaMesmaEmDiaOValorPagoDeveSerIgualAoOriginal() { var payableAccount = new PayableAccount("Conta de teste", value: 100m, dueDate: DateTime.Now.Date.AddDays(3)); var paidAccount = await _payableAccountService.Pay(payableAccount, payDay : DateTime.Now.Date); Assert.True(paidAccount.AmountPaid == 100m && paidAccount.DelayedDays == 0); }
public async Task <ICommandResult> Handle(PayableAccountCreateCommand request, CancellationToken cancellationToken = default) { request.Validate(); if (request.Invalid) { return(new CommandResult(false, "Dados incompletos", null, request.Notifications)); } var payableAccount = new PayableAccount(request.Name, request.Value, (DateTime)request.DueDate); try { await _payableAccountRepository.InsertAsync(payableAccount, cancellationToken); var paidAccount = await _payableAccountService.Pay(payableAccount, (DateTime)request.Payday); await _paidAccountRepository.InsertAsync(paidAccount, cancellationToken); await _unitOfWork.CommitAsync(cancellationToken); } catch (Exception ex) { await _unitOfWork.RollbackAsync(cancellationToken); return(new CommandResult(false, "Erro ao gravar o registro", null, ex.Message)); } return(new CommandResult(true, "Conta a pagar registrada", payableAccount)); }