public Wallet UpdateWalletPurchase(int userId, decimal balance) { using (var session = _dbSessionService.OpenSession()) { using (var transaction = session.BeginTransaction()) { var result = _walletQueryService.QueryWallets(session, userId); var resultArray = result[0]; if (resultArray.Balance - balance < 0) { throw new Exception("insufficient balance"); } resultArray.Balance = resultArray.Balance - balance; resultArray.Holdings = resultArray.Holdings + balance; session.SaveOrUpdate(resultArray); transaction.Commit(); return(result[0]); } } }
public void should_update_wallet_withdrawal_return() { var userId = TestData.GenerateRandomInt(); var balance = 100.90m; var session = Substitute.For <ISession>(); _dbSessionService.OpenSession().Returns(session); _walletQueryService.QueryWallets(Arg.Any <ISession>(), Arg.Any <int>()) .Returns(new List <Wallet> { new Wallet { UserId = userId, Balance = 15979.90m, Holdings = 100 } }); _sut.UpdateWalletPurchase(userId, balance); }
public Wallet UpdateWalletSale(int userId, decimal balance) { using (var session = _dbSessionService.OpenSession()) { using (var transaction = session.BeginTransaction()) { var result = _walletQueryService.QueryWallets(session, userId); result[0].Balance = result[0].Balance + balance; result[0].Holdings = result[0].Holdings - balance; session.SaveOrUpdate(result[0]); transaction.Commit(); return(result[0]); } } }