Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }