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 DepositWithErrorInRemoteService() { var valueToDeposit = 100.5m; var hardwareMock = new HardwareMock(number, valueToDeposit); var serviceMock = new RemoteServiceMock(account, RemoteServiceMock.Error.PersistAccount); var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock); cashMachine.Login(); Assert.Throws <AccountPersistenceException>(() => cashMachine.Deposit()); }
public void DepositErrorWhenCantGetValueFromHardware() { var valueToDeposit = 100.5m; var hardwareMock = new HardwareMock(number, valueToDeposit, HardwareMock.Error.ValueToDeposit); var serviceMock = new RemoteServiceMock(account); var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock); cashMachine.Login(); Assert.Throws <ReadValueToDepositException>(() => cashMachine.Deposit()); }
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 RequestBalanceWithValue() { var depositValue = 50.5m; var hardwareMock = new HardwareMock(number, depositValue); var serviceMock = new RemoteServiceMock(account); var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock); cashMachine.Login(); cashMachine.Deposit(); var ballance = cashMachine.AccountBalance(); Assert.AreEqual(string.Format(CourseraTDD.CashMachine.CashMachine.SuccessBalanceMessage, depositValue), ballance); }
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()); }
public void DepositAuthenticated() { var valueToDeposit = 100.5m; var hardwareMock = new HardwareMock(number, valueToDeposit); var serviceMock = new RemoteServiceMock(account); var cashMachine = new cashMachine.CashMachine(hardwareMock, serviceMock); cashMachine.Login(); var result = cashMachine.Deposit(); hardwareMock.VerifyCalledMethod(HardwareMock.MethodGetValueToDeposit, null, valueToDeposit); serviceMock.VerifyCalledMethod(RemoteServiceMock.MethodPersitAccount, new object[] { account }); Assert.AreEqual(CourseraTDD.CashMachine.CashMachine.SuccessDepositMessage, result); }
public void DepositNotAuthenticated() { var cashMachine = new cashMachine.CashMachine(null, null); Assert.Throws <NotAuthorizedException>(() => cashMachine.Deposit()); }