Esempio n. 1
0
        public void WithdrawWithBalancePositive()
        {
            var depositValue  = 50.5m;
            var withdrawValue = 10.2m;

            var expectedBalance = depositValue - withdrawValue;

            var hardwareMock = new HardwareMock(number, depositValue, withdrawValue);
            var serviceMock  = new RemoteServiceMock(account);

            var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock);

            cashMachine.Login();
            cashMachine.Deposit();

            var result = cashMachine.Withdraw();

            var balance = cashMachine.AccountBalance();

            hardwareMock.VerifyCalledMethod(HardwareMock.MethodGetValueToWithdraw, null, withdrawValue);
            serviceMock.VerifyCalledMethod(RemoteServiceMock.MethodPersitAccount, new object[] { account }, null, 2);

            Assert.AreEqual(string.Format(CourseraTDD.CashMachine.CashMachine.SuccessBalanceMessage, expectedBalance), balance);
            Assert.AreEqual(CourseraTDD.CashMachine.CashMachine.SuccessWithdrawMessage, result);
        }
Esempio n. 2
0
        public void WithdrawWhenCantGetValueFromHardware()
        {
            var depositValue = 50.5m;

            var hardwareMock = new HardwareMock(number, depositValue, 0m, HardwareMock.Error.ValueToWithdraw);
            var serviceMock  = new RemoteServiceMock(account);

            var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock);

            cashMachine.Login();
            cashMachine.Deposit();

            Assert.Throws <ReadValueToWithdrawException>(() => cashMachine.Withdraw());
        }
Esempio n. 3
0
        public void WithdrawWithErrorInRemoteService()
        {
            var depositValue  = 50.5m;
            var withdrawValue = 10.2m;

            var hardwareMock = new HardwareMock(number, depositValue, withdrawValue);
            var serviceMock  = new RemoteServiceMock(account);

            var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock);

            cashMachine.Login();
            cashMachine.Deposit();

            serviceMock.SetError(RemoteServiceMock.Error.PersistAccount);

            Assert.Throws <AccountPersistenceException>(() => cashMachine.Withdraw());
        }