public async Task GetAdvancePaymentRequestDetailsTest() { #region ContextSetup var dbContext = DbContext; var registeredCustomer = await dbContext.Customers.FirstOrDefaultAsync(); var waiToken = registeredCustomer.MapToWhoAmI().EncryptToken(); var customerModel = new CustomerModel() { Id = registeredCustomer.Id, Name = registeredCustomer.Name, Email = registeredCustomer.Email }; var paymentModel = new PaymentModel() { Customer = customerModel, Amount = 100, InstalmentsCount = 5, CardNumber = "5555111122223333", CardExpirationDate = "08/2021", CardName = "OLAVO DE SOUZA ROCHA NETO", CardSecurityNumber = "558", AuthToken = waiToken }; var before = DateTime.Now; var paymentModel2 = new PaymentModel() { Customer = customerModel, Amount = 150, InstalmentsCount = 5, CardNumber = "5555111122223333", CardExpirationDate = "08/2021", CardName = "OLAVO DE SOUZA ROCHA NETO", CardSecurityNumber = "558", AuthToken = waiToken }; PaymentController controller = new PaymentController(dbContext, FakeAcquirer, FakeAccount, FakeLogger); await controller.ProcessPayment(paymentModel); await controller.ProcessPayment(paymentModel2); var paymentListModel = new PaymentListModel() { AuthToken = waiToken }; var firstPaymentForAdvance = new AdvanceListModel() { AuthToken = waiToken, Payments = new[] { (await controller.ListAvailableForAdvance(paymentListModel)).Payments.First() }.Select(q => q.Id) }; var adv = await controller.RequestForAdvance(firstPaymentForAdvance); #endregion var adModel = new AdvanceDetailsModel() { AuthToken = waiToken, Id = adv.Id }; var radv = await controller.GetAdvanceDetails(adModel); Assert.Equal(radv.Id, adModel.Id); Assert.Single(radv.Payments); var percentTax = 0.038m; var instalment = decimal.Divide(150, 5); Assert.Equal(150m - 0.9m - (1m * percentTax) * instalment - (2m * percentTax) * instalment - (3m * percentTax) * instalment - (4m * percentTax) * instalment - (5m * percentTax) * instalment, adv.NetAmount); }