예제 #1
0
        public void Deduct_balance_by_withdrawn_amount()
        {
            var accountRepo = A.Fake<IAccountRepository>();
            var transactionRepo = A.Fake<ITransactionRepository>();

            //افترض وجود حساب لعميل
            int accountId = 1;
            decimal amount = 500;
            var account = new Account(){Balance=1000};
            A.CallTo(() =>
                accountRepo.Get(1))
                .Returns(account);
            //عندما اعطي رقم الحساب و القيمة
            //ثم اقوم بعملية السحب
            //Execution
            var sut = new AccountantService(accountRepo, transactionRepo);
            var result = sut.Withdraw(accountId,amount);
            A.CallTo(() => accountRepo.Get(1)).MustHaveHappened(Repeated.AtLeast.Once);

            //يقوم النظام بتعديل رصيد الحساب في قاعدة البيانات
            A.CallTo(()=>accountRepo.Update(account)).MustHaveHappened(Repeated.AtLeast.Once);

            //اجد الرصيد نقص بمقدار هذه القيمة
            Assert.AreEqual(500,result.Balance);
        }
예제 #2
0
        public void Create_transaction_to_register_withdrawal_action()
        {
            var accountRepo = A.Fake<IAccountRepository>();
            var transactionRepo = A.Fake<ITransactionRepository>();
            //افترض وجود حساب لعميل
            int accountId = 1;
            decimal amount = 500;

            //عندما اعطي رقم الحساب و القيمة
            //ثم اقوم بعملية السحب
            //Execution
            var sut = new AccountantService(accountRepo,transactionRepo);
            var result = sut.Withdraw(accountId,amount);
            //ويقوم النظام بتسجيل حركة حساب بعملية السحب التي تمت
            A.CallTo(() => transactionRepo.Create(accountId,amount)).MustHaveHappened(Repeated.Exactly.Once);
        }