예제 #1
0
        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);
        }
예제 #2
0
        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))));
        }
예제 #3
0
        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))));
        }
예제 #4
0
        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();
        }