public ActionResult Credit([FromBody] Credit credit) { try { var creditTrn = transactionsService.Credit(credit); return(Ok(creditTrn)); } catch (Exception ex) { return(BadRequest(ex)); } }
public void CreditTest_OK() { // MOCK var dataBankAccount = new List <BankAccount> { new BankAccount { Id = 1, AccountNumber = 1, Agency = 1, Balance = 500, PersonId = 1, Type = Domain.Enum.BankAccountType.Corrente }, new BankAccount { Id = 2, AccountNumber = 2, Agency = 1, Balance = 1000, PersonId = 2, Type = Domain.Enum.BankAccountType.Corrente }, new BankAccount { Id = 3, AccountNumber = 3, Agency = 1, Balance = 200, PersonId = 3, Type = Domain.Enum.BankAccountType.Corrente } }.AsQueryable(); var dataBankAccountLaunches = new List <BankAccountLaunches> { }.AsQueryable(); var mockSetBankAccount = new Mock <DbSet <BankAccount> >(); mockSetBankAccount.As <IQueryable <BankAccount> >().Setup(m => m.Provider).Returns(dataBankAccount.Provider); mockSetBankAccount.As <IQueryable <BankAccount> >().Setup(m => m.Expression).Returns(dataBankAccount.Expression); mockSetBankAccount.As <IQueryable <BankAccount> >().Setup(m => m.ElementType).Returns(dataBankAccount.ElementType); mockSetBankAccount.As <IQueryable <BankAccount> >().Setup(m => m.GetEnumerator()).Returns(dataBankAccount.GetEnumerator()); var mockSetBankAccountLaunches = new Mock <DbSet <BankAccountLaunches> >(); mockSetBankAccountLaunches.As <IQueryable <BankAccountLaunches> >().Setup(m => m.Provider).Returns(dataBankAccountLaunches.Provider); mockSetBankAccountLaunches.As <IQueryable <BankAccountLaunches> >().Setup(m => m.Expression).Returns(dataBankAccountLaunches.Expression); mockSetBankAccountLaunches.As <IQueryable <BankAccountLaunches> >().Setup(m => m.ElementType).Returns(dataBankAccountLaunches.ElementType); mockSetBankAccountLaunches.As <IQueryable <BankAccountLaunches> >().Setup(m => m.GetEnumerator()).Returns(dataBankAccountLaunches.GetEnumerator()); var mockContext = new Mock <AppDbContext>(); mockContext.Setup(c => c.BankAccount).Returns(mockSetBankAccount.Object); mockContext.Setup(c => c.Set <BankAccount>()).Returns(mockSetBankAccount.Object); mockContext.Setup(c => c.BankAccountLaunches).Returns(mockSetBankAccountLaunches.Object); mockContext.Setup(c => c.Set <BankAccountLaunches>()).Returns(mockSetBankAccountLaunches.Object); BankAccountRepository bankAccountRepository = new BankAccountRepository(mockContext.Object); BankAccountLaunchesRepository bankAccountLaunchesRepository = new BankAccountLaunchesRepository(mockContext.Object); BankAccountService bankAccountService = new BankAccountService(bankAccountRepository, new Service.Validators.BankAccountValidator()); BankAccountLaunchesService bankAccountLaunchesService = new BankAccountLaunchesService(bankAccountLaunchesRepository, new Service.Validators.BankAccountLaunchesValidator()); TransactionsService transactionsService = new TransactionsService(bankAccountLaunchesService, bankAccountService); var credit = new Domain.ApiEntryModels.Credit(1, 1, 100); var bankAccountCurrentBalance = bankAccountService.Get(credit.Agency, credit.AccountNumber).Balance; var bankDebit = transactionsService.Credit(credit); decimal currentBalanceWithDebit = bankAccountCurrentBalance + credit.Value; decimal currentBalance = bankDebit.Result.Balance; Assert.Equal(currentBalanceWithDebit, currentBalance); }