Exemple #1
0
        public void Arrange()
        {
            _query = new GetAccountFinanceOverviewQuery
            {
                AccountHashedId = ExpectedHashedAccountId
            };

            _orchestrator = new Mock <EmployerAccountTransactionsOrchestrator>();
            _orchestrator.Setup(o => o.Index(It.IsAny <GetAccountFinanceOverviewQuery>()))
            .ReturnsAsync(new OrchestratorResponse <FinanceDashboardViewModel>
            {
                Data = new FinanceDashboardViewModel
                {
                    AccountHashedId  = ExpectedHashedAccountId,
                    CurrentLevyFunds = ExpectedCurrentFunds
                }
            });

            _controller = new EmployerAccountTransactionsController(
                Mock.Of <IAuthenticationService>(),
                _orchestrator.Object,
                Mock.Of <IMapper>(),
                Mock.Of <IMediator>(),
                Mock.Of <ILog>());
        }
        public async Task ThenShouldDetermineIfEmployerIsLevyOrNonLevy(string apprenticeshipEmployerType, bool isLevy)
        {
            //Arrange
            _accountApiClient.Setup(c => c.GetAccount(AccountId))
            .ReturnsAsync(new AccountDetailViewModel
            {
                ApprenticeshipEmployerType = apprenticeshipEmployerType
            });

            var getAccountFinanceOverviewQuery = new GetAccountFinanceOverviewQuery
            {
                AccountHashedId = HashedAccountId,
                AccountId       = AccountId
            };

            _mediator.Setup(m => m.SendAsync(It.IsAny <GetAccountFinanceOverviewQuery>()))
            .ReturnsAsync(new GetAccountFinanceOverviewResponse());

            //Act
            var response = await _orchestrator.Index(getAccountFinanceOverviewQuery);

            //Assert
            response.Should().NotBeNull();
            response.Data.IsLevyEmployer.Should().Be(isLevy);
        }
        public void Setup()
        {
            _now                = DateTime.UtcNow;
            _logger             = new Mock <ILog>();
            _currentDateTime    = new Mock <ICurrentDateTime>();
            _forecastingService = new Mock <IDasForecastingService>();
            _levyService        = new Mock <IDasLevyService>();
            _validator          = new Mock <IValidator <GetAccountFinanceOverviewQuery> >();

            _query = new GetAccountFinanceOverviewQuery {
                AccountId = ExpectedAccountId
            };
            _expiringFunds = new ExpiringAccountFunds
            {
                AccountId     = ExpectedAccountId,
                ExpiryAmounts = new List <ExpiringFunds>
                {
                    new ExpiringFunds {
                        PayrollDate = new DateTime(2019, 4, 6), Amount = 3000
                    },
                    new ExpiringFunds {
                        PayrollDate = new DateTime(2019, 5, 6), Amount = 4000
                    },
                    new ExpiringFunds {
                        PayrollDate = new DateTime(2019, 3, 6), Amount = 2000
                    }
                }
            };

            _projectedCalculation = new ProjectedCalculation
            {
                AccountId      = ExpectedAccountId,
                FundsIn        = ExpectedFundsIn,
                FundsOut       = ExpectedFundsOut,
                NumberOfMonths = 12
            };

            _handler = new GetAccountFinanceOverviewQueryHandler(
                _currentDateTime.Object,
                _forecastingService.Object,
                _levyService.Object, _validator.Object,
                _logger.Object);
            _currentDateTime.Setup(d => d.Now).Returns(_now);
            _forecastingService.Setup(s => s.GetExpiringAccountFunds(ExpectedAccountId)).ReturnsAsync(_expiringFunds);
            _forecastingService.Setup(s => s.GetProjectedCalculations(ExpectedAccountId)).ReturnsAsync(_projectedCalculation);
            _levyService.Setup(s => s.GetAccountBalance(ExpectedAccountId)).ReturnsAsync(ExpectedCurrentFunds);
            _validator.Setup(v => v.ValidateAsync(_query))
            .ReturnsAsync(new ValidationResult {
                ValidationDictionary = new Dictionary <string, string>()
            });
        }
        public async Task <ActionResult> Index(GetAccountFinanceOverviewQuery query)
        {
            _logger.Info($"EmployerAccountTransactionsController Index GetAccountFinanceOverviewQuery  AccountHashedId : {query.AccountHashedId} AccountId : {query.AccountId} ");

            var viewModel = await _accountTransactionsOrchestrator.Index(query);

            _logger.Info($"After calling  _accountTransactionsOrchestrator ViewModel : {viewModel} viewModel.RedirectUrl : {viewModel.RedirectUrl} ");

            if (viewModel.RedirectUrl != null)
            {
                return(Redirect(viewModel.RedirectUrl));
            }

            return(View(viewModel));
        }
Exemple #5
0
        public virtual async Task <OrchestratorResponse <FinanceDashboardViewModel> > Index(GetAccountFinanceOverviewQuery query)
        {
            var accountTask = _accountApiClient.GetAccount(query.AccountId);

            _logger.Info("After GetAccount call");
            var getAccountFinanceOverviewTask = _mediator.SendAsync(query);

            var account = await accountTask;

            var getAccountFinanceOverview = await getAccountFinanceOverviewTask;

            _logger.Info($"account : {account}  getAccountFinanceOverview: {getAccountFinanceOverview} ");
            _logger.Info($" account.ApprenticeshipEmployerType: {account.ApprenticeshipEmployerType}  AccountHashedId: {query.AccountHashedId} CurrentLevyFunds: {getAccountFinanceOverview.CurrentFunds} ");

            var viewModel = new OrchestratorResponse <FinanceDashboardViewModel>
            {
                Data = new FinanceDashboardViewModel
                {
                    IsLevyEmployer        = (ApprenticeshipEmployerType)Enum.Parse(typeof(ApprenticeshipEmployerType), account.ApprenticeshipEmployerType, true) == ApprenticeshipEmployerType.Levy,
                    AccountHashedId       = query.AccountHashedId,
                    CurrentLevyFunds      = getAccountFinanceOverview.CurrentFunds,
                    ExpiringFunds         = getAccountFinanceOverview.ExpiringFundsAmount,
                    ExpiryDate            = getAccountFinanceOverview.ExpiringFundsExpiryDate,
                    TotalSpendForLastYear = getAccountFinanceOverview.TotalSpendForLastYear,
                    FundingExpected       = getAccountFinanceOverview.FundsIn,
                    AvailableFunds        = getAccountFinanceOverview.FundsIn - getAccountFinanceOverview.FundsOut,
                    ProjectedSpend        = getAccountFinanceOverview.FundsOut
                }
            };

            _logger.Info($"viewModel : {viewModel}");

            return(viewModel);
        }