public void ErrorPathCallsBeginsTransactionAndRollbackAsync() { string inputUser = "******"; double inputbalance = 1000; int generatedAccountId = 1; int generatedTransactionId = 0; Account resultFromAddAccount = new Account { AccountId = generatedAccountId, UserName = inputUser, Balance = 0 }; Account resultFromUpdate = new Account { AccountId = generatedAccountId, UserName = inputUser, Balance = inputbalance }; MTTransaction resultFromAddTransact = new MTTransaction { TransactionId = generatedTransactionId, DestinationAccountId = new Account { AccountId = generatedAccountId, Balance = inputbalance, UserName = inputUser }, SourceAccountId = null, TransferAmount = inputbalance }; moqAccount.Setup(x => x.AddAccount(inputUser)).Returns(Task.FromResult(resultFromAddAccount)); moqAccount.Setup(x => x.UpdateBalance(resultFromAddAccount, inputbalance)).Returns(Task.FromResult(resultFromUpdate)); moqTransact.Setup(x => x.AddMTTransaction(resultFromUpdate, inputbalance)).Returns(Task.FromResult(resultFromAddTransact)); Assert.ThrowsAsync <BLException>(async() => await mgr.CreateNewUser(inputUser, inputbalance)); moqTranHandler.Verify(x => x.StartWork(moqAccount.Object, moqTransact.Object), Times.Once); moqTranHandler.Verify(x => x.RollbackWork(), Times.Once); }
public void ThrowsBLExceptionWhenDALReturns0TransactionIdFromAddTransaction() { string inputUser = "******"; double inputbalance = 1000; int generatedAccountId = 1; int generatedTransactionId = 0; Account resultFromAddAccount = new Account { AccountId = generatedAccountId, UserName = inputUser, Balance = 0 }; Account resultFromUpdate = new Account { AccountId = generatedAccountId, UserName = inputUser, Balance = inputbalance }; MTTransaction resultFromAddTransact = new MTTransaction { TransactionId = generatedTransactionId, DestinationAccountId = resultFromUpdate, TransferAmount = inputbalance, SourceAccountId = null }; moqAccount.Setup(x => x.AddAccount(inputUser)).Returns(Task.FromResult(resultFromAddAccount)); moqAccount.Setup(x => x.UpdateBalance(resultFromAddAccount, inputbalance)).Returns(Task.FromResult(resultFromUpdate)); moqTransact.Setup(x => x.AddMTTransaction(resultFromUpdate, inputbalance)).Returns(Task.FromResult(resultFromAddTransact)); Assert.ThrowsAsync <BLException>(async() => await mgr.CreateNewUser(inputUser, inputbalance)); }
public void HappyPathCallsBeginsTransactionAndCommitAsync() { int inputAccountId = 1; int inputDestinationId = 2; int generatedTransactionId = 2; double inputTransferAmount = 100; double sourceBalance = 1000; double destinationBalance = 200; Account resSourceAcct = new Account { AccountId = inputAccountId, UserName = "******", Balance = sourceBalance }; Account resDestAcct = new Account { AccountId = inputDestinationId, UserName = "******", Balance = destinationBalance }; Account newresSourceAcct = new Account { AccountId = inputAccountId, UserName = "******", Balance = sourceBalance - inputTransferAmount }; Account newresDestAcct = new Account { AccountId = inputDestinationId, UserName = "******", Balance = destinationBalance + inputTransferAmount }; MTTransaction resultFromAddTransact = new MTTransaction { TransactionId = generatedTransactionId, DestinationAccountId = new Account { AccountId = inputDestinationId, Balance = inputTransferAmount, UserName = "******" }, SourceAccountId = new Account { AccountId = inputAccountId, Balance = inputTransferAmount, UserName = "******" }, TransferAmount = inputTransferAmount }; moqAccount.Setup(x => x.GetAccount(inputAccountId)).Returns(Task.FromResult(resSourceAcct)); moqAccount.Setup(x => x.GetAccount(inputDestinationId)).Returns(Task.FromResult(resDestAcct)); moqAccount.Setup(x => x.UpdateBalance(resSourceAcct, sourceBalance - inputTransferAmount)).Returns(Task.FromResult(newresSourceAcct)); moqAccount.Setup(x => x.UpdateBalance(resDestAcct, destinationBalance + inputTransferAmount)).Returns(Task.FromResult(newresDestAcct)); moqTransact.Setup(x => x.AddMTTransaction(newresDestAcct, newresSourceAcct, inputTransferAmount)).Returns(Task.FromResult(resultFromAddTransact)); var sut = mgr.Transfer(inputAccountId, inputDestinationId, inputTransferAmount); moqTranHandler.Verify(x => x.StartWork(moqAccount.Object, moqTransact.Object), Times.Once); //moqTranHandler.Verify(x => x.EndWork(), Times.Once); Assert.AreEqual(generatedTransactionId, sut.Result); }
public void HappyPathCallsBeginsTransactionAndCommitAsync() { string inputUser = "******"; double inputbalance = 1000; int generatedAccountId = 1; int generatedTransactionId = 1; Account resultFromAddAccount = new Account { AccountId = generatedAccountId, UserName = inputUser, Balance = 0 }; Account resultFromUpdate = new Account { AccountId = generatedAccountId, UserName = inputUser, Balance = inputbalance }; MTTransaction resultFromAddTransact = new MTTransaction { TransactionId = generatedTransactionId, DestinationAccountId = new Account { AccountId = generatedAccountId, Balance = inputbalance, UserName = inputUser }, SourceAccountId = null, TransferAmount = inputbalance }; moqAccount.Setup(x => x.AddAccount(inputUser)).Returns(Task.FromResult(resultFromAddAccount)); moqAccount.Setup(x => x.UpdateBalance(resultFromAddAccount, inputbalance)).Returns(Task.FromResult(resultFromUpdate)); moqTransact.Setup(x => x.AddMTTransaction(resultFromUpdate, inputbalance)).Returns(Task.FromResult(resultFromAddTransact)); var sut = mgr.CreateNewUser(inputUser, inputbalance); moqTranHandler.Verify(x => x.StartWork(moqAccount.Object, moqTransact.Object), Times.Once); moqTranHandler.Verify(x => x.EndWork(), Times.Once); Assert.AreEqual(generatedAccountId, sut.Result); }