public async Task wthdraw_usd_500_should_work() { DepositWithDrawViewModel model = new DepositWithDrawViewModel { AccountNumber = "3355-3346-1466-7893", Amount = 500, Currency = "USD" }; _mockBankAccountService.Setup(x => x.GetFunds(model.AccountNumber, "USD")).Returns(Task.FromResult <double>(5434)); var resultObj = Task.FromResult <BankAccountModel>(new BankAccountModel { AccountNumber = "3355-3346-1466-7893", AccountHolderName = "Jack Daniels", Amount = 4934, Currency = "USD" }); _mockBankAccountService.Setup(x => x.Transaction(model.AccountNumber, model.Amount, model.Currency, TransactionType.WITHDRAW)).Returns(resultObj); var response = await _bancAccountController.Withdraw(model) as HttpResponseMessage; var content = response.Content as ObjectContent; ((ResponseMessage)content.Value).Successfull.Should().BeTrue(); response.StatusCode.Should().Be(HttpStatusCode.OK); }
public async Task <HttpResponseMessage> Withdraw(DepositWithDrawViewModel model) { if (ModelState.IsValid) { double availableFunds = await _bankAccountService.GetFunds(model.AccountNumber, model.Currency); if (availableFunds < model.Amount) { return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { AccountNumber = model.AccountNumber, Balance = null, Message = "Not Enough funds", Currency = model.Currency, Successfull = false }))); } var result = await _bankAccountService.Transaction(model.AccountNumber, model.Amount, model.Currency, TransactionType.WITHDRAW); if (result != null) { if (result.AccountNumber == "Invalid") { return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { Successfull = false, AccountNumber = "Invalid", Balance = null, Message = "Invalid Account Number", Currency = null }))); } return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { AccountNumber = model.AccountNumber, Balance = result.Amount, Message = "Withdraw Succsessfull", Currency = result.Currency, Successfull = true }))); } else { return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { AccountNumber = model.AccountNumber, Balance = null, Message = "Unexpected error", Currency = null, Successfull = false }))); } } return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.InternalServerError, ModelState.Values.SelectMany(z => z.Errors)))); }
public async Task <HttpResponseMessage> Deposit(DepositWithDrawViewModel model) { if (ModelState.IsValid) { var result = await _bankAccountService.Transaction(model.AccountNumber, model.Amount, model.Currency, TransactionType.DEPOSIT); if (result != null) { if (result.AccountNumber == "Invalid") { return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { Successfull = false, AccountNumber = "Invalid", Balance = null, Message = "Invalid Account Number", Currency = null }))); } return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { Successfull = true, AccountNumber = result.AccountNumber, Balance = result.Amount, Currency = result.Currency }))); } else { return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage { AccountNumber = null, Balance = null, Message = "Unexpected error", Currency = null, Successfull = false }))); } } return(await Task.FromResult( Request.CreateResponse(HttpStatusCode.InternalServerError, ModelState.Values.SelectMany(z => z.Errors)))); }
public async Task wthdraw_usd_10000_should_not_work() { DepositWithDrawViewModel model = new DepositWithDrawViewModel { AccountNumber = "3355-3346-1466-7893", Amount = 10000, Currency = "USD" }; _mockBankAccountService.Setup(x => x.GetFunds(model.AccountNumber, "USD")).Returns(Task.FromResult <double>(5434)); var response = await _bancAccountController.Withdraw(model) as HttpResponseMessage; var content = response.Content as ObjectContent; ResponseMessage responseMessage = content.Value as ResponseMessage; responseMessage.Message.Should().Be("Not Enough funds"); responseMessage.Successfull.Should().BeFalse(); }