예제 #1
0
        public async Task Withdraw_Wallet_Fund_Should_Return_Bad_Request_Response_When_Amount_Is_Less_Than_One()
        {
            //Arrange
            var withdrawWallet = new WithdrawFundRequestModel {
                Amount = 0
            };

            Mediator.Setup(x => x.Send(It.IsAny <WithdrawFundRequestModel>(), new CancellationToken())).
            Throws(new ArgumentException());
            var walletController = new WalletController(Mediator.Object);

            //Action
            var result = await walletController.Withdraw(withdrawWallet);

            //Assert

            Assert.IsType <BadRequestObjectResult>(result);
        }
예제 #2
0
        public async Task Withdraw_Wallet_Fund_Should_Return_Bad_Request_Response_When_Amount_Is_More_Than_Balance()
        {
            //Arrange
            Wallet wallet = new Wallet {
                AccountNumber = "0123456789", Balance = 100
            };
            var withdrawWallet = new WithdrawFundRequestModel {
                Amount = 200, AccountNumber = wallet.AccountNumber
            };

            Mediator.Setup(x => x.Send(It.IsAny <WithdrawFundRequestModel>(), new CancellationToken())).
            Throws(new ArgumentException());
            var walletController = new WalletController(Mediator.Object);

            //Action
            var result = await walletController.Withdraw(withdrawWallet);

            //Assert

            Assert.IsType <BadRequestObjectResult>(result);
        }
예제 #3
0
        public async Task <IActionResult> Withdraw([FromBody] WithdrawFundRequestModel withdrawRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new Response
                {
                    Success = false,
                    Message = "Validation error-accountNumber and amount fields are required, with a valid amount."
                }));
            }

            try
            {
                var response = await _mediator.Send(withdrawRequest);

                return(Ok(new PayloadedResponse <WithdrawFundResponseModel>
                {
                    Data = response,
                    Message = "Fund withdrawn from wallet successfully",
                    Success = true
                }));
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new Response
                {
                    Success = false,
                    Message = ex.Message
                }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new ErrorResponse
                {
                    Errors = { ex },
                    Success = false,
                    Message = ex.Message
                }));
            }
        }