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