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); }
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()); }
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()); }