예제 #1
0
        public async Task <ActionResult> DepositMoneyOperation(AccountOperationViewModel data)
        {
            var result = await Task.Run(() =>
                                        this.DepositWithdrawOperation(data, (s, d) => s.DepositMoney(d.AccountNumber, d.Sum)));

            return(result);
        }
        public async Task <IActionResult> Index(int id, AccountOperationViewModel formModel)
        {
            _logger.LogInformation($"Get index operation with id: {id}, view model : {formModel}");
            var viewModel = await _mediator.Send(new GetAccountOperationQuery(id,
                                                                              formModel.StartPeriod,
                                                                              formModel.EndPeriod));

            ViewBag.CanTransfer = await _mediator.Send(new TransferValidationCommand(id));

            ViewBag.CorrectAmount = viewModel.Amount > 0;

            return(View(viewModel));
        }
        public async Task Index_Get_WhenIdAndFormModelNotNull()
        {
            //arrange
            var id            = 3;
            var testViewModel = new AccountOperationViewModel()
            {
                Operations = GetFakeOperations(),
                Amount     = 20000
            };

            var loggerMock   = new Mock <ILogger <OperationController> >();
            var accountMock  = new Mock <IAsyncRepository <BankAccount> >();
            var mediatorMock = new Mock <IMediator>();

            mediatorMock.Setup(m =>
                               m.Send(It.IsAny <GetAccountOperationQuery>(),
                                      It.IsAny <CancellationToken>()))
            .ReturnsAsync(testViewModel)
            .Verifiable();

            mediatorMock.Setup(m =>
                               m.Send(It.IsAny <TransferValidationCommand>(),
                                      It.IsAny <CancellationToken>()))
            .ReturnsAsync(true)
            .Verifiable();

            var controller = new OperationController(mediatorMock.Object, accountMock.Object, loggerMock.Object);

            //act
            var result = await controller.Index(id, testViewModel);

            //assert
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <AccountOperationViewModel>(viewResult.Model);

            Assert.Equal(expected: 20000, model.Amount);
            Assert.Equal(2, model.Operations.Count);
        }
예제 #4
0
        private ActionResult DepositWithdrawOperation(
            AccountOperationViewModel data,
            Action <IAccountService, AccountOperationViewModel> operation)
        {
            if (!ModelState.IsValid)
            {
                TempData["isError"] = true;
                return(View("DepositOrWithdrawMoney"));
            }

            try
            {
                operation(_accountService, data);
                TempData["isError"] = false;
            }
            catch (Exception e)
            {
                ModelState.AddModelError(nameof(data.AccountNumber), e.Message);
                TempData["isError"] = true;
                return(View("DepositOrWithdrawMoney"));
            }

            return(RedirectToAction(nameof(this.AccountOperations)));
        }