public async Task CalculatePaymentsWhenInterestIsZero() { var loan = new Loan(5, 0, 500, new Guid()); var result = await _loanService.CalculatePayments(loan); result.Should().HaveValue(); result.Should().HaveNumberOfPayments(loan.NumberOfInstallments); result.Should().HaveAllPaymentsWithAmount(100); }
public async Task <BaseResponse <CreateLoanDto> > Handle(CreateLoanCommand request, CancellationToken cancellationToken) { try { var loan = new Loan(request.NumberOfInstallments, request.Interest, request.Amount, request.PersonId); var loanId = await _loanRepository.CreateLoanAsync(loan); var loanWithPayments = await _loanService.CalculatePayments(loan); var paymentDtos = _mapper.Map <IEnumerable <PaymentDto> >(loanWithPayments.Payments); var loanCost = _loanService.CalculateLoanCost(loan); return(new BaseResponse <CreateLoanDto>(new CreateLoanDto() { Id = loanId, Payments = paymentDtos, TotalCost = loanCost })); } catch (Exception e) { // there should be logging return(new BaseResponse <CreateLoanDto>("An error occurred when handling request.")); } }