public void MakePaymentTest()
        {
            Guid id = Guid.NewGuid();

            IncomeAndExpenditure iAndE = new IncomeAndExpenditure()
            {
                HousingStatus    = "housing-status",
                EmploymentStatus = "employment-status"
            };

            BudgetSummary   budgetSummary   = new BudgetSummary();
            BudgetSummaryVm budgetSummaryVm = new BudgetSummaryVm();

            this._sessionState.Setup(x => x.GetIncomeAndExpenditure(id)).Returns(iAndE);
            this._budgetCalculatorService.Setup(x => x.GetBudgetSummary(
                                                    iAndE, id, this._caseflowUserId)).Returns(budgetSummary);
            this._mapper.Setup(x => x.Map <BudgetSummary, BudgetSummaryVm>(budgetSummary)).Returns(budgetSummaryVm);

            this._gtmService.Setup(x => x.RaiseBudgetCalculatorContinuedToPaymentEvent(
                                       budgetSummaryVm, this._caseflowUserId, "employment-status", "housing-status"));

            RedirectToActionResult result = (RedirectToActionResult)this._controller.MakePayment(id);

            Assert.AreEqual("Index", result.ActionName);
            Assert.AreEqual("PaymentOptions", result.ControllerName);
            Assert.AreEqual(id, result.RouteValues["id"]);
        }
        public async Task BudgetSummary()
        {
            string id = Guid.NewGuid().ToString();

            this._controller.RouteData.Values.Add("id", id);
            this._portalSettings.Features.EnablePartialSave = true;

            IncomeAndExpenditure iAndE = new IncomeAndExpenditure()
            {
                EmploymentStatus = "employment-status",
                HousingStatus    = "housing-status",
            };

            string lowellReference = "123456789";

            this._sessionState.Setup(x => x.CheckSessionStatus(id));
            this._sessionState.Setup(x => x.GetIncomeAndExpenditure(Guid.Parse(id))).Returns(iAndE);
            this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id)))
            .Returns(lowellReference);

            BudgetSummary budgetSummary = new BudgetSummary()
            {
                IncomeTotal = 5000
            };
            BudgetSummaryVm budgetSummaryVm = new BudgetSummaryVm()
            {
                IncomeTotal = 5000
            };

            this._budgetCalculatorService.Setup(x => x.GetBudgetSummary(
                                                    iAndE, Guid.Parse(id), this._caseflowUserId)).Returns(budgetSummary);
            this._mapper.Setup(x => x.Map <BudgetSummary, BudgetSummaryVm>(budgetSummary)).Returns(budgetSummaryVm);

            this._gtmService.Setup(x => x.RaiseBudgetCalculatorCompletedEvent(
                                       budgetSummaryVm, this._caseflowUserId, "employment-status", "housing-status"));

            this._budgetCalculatorService.Setup(x => x.SaveIncomeAndExpenditure(iAndE, lowellReference))
            .Returns(Task.CompletedTask);
            this._budgetCalculatorService.Setup(x => x.RemovePartialSaved(Guid.Parse(this._caseflowUserId)))
            .Returns(Task.CompletedTask);

            this._sessionState.Setup(x => x.IandELaunchedExternally).Returns(true);

            ViewResult result = (ViewResult)await this._controller.BudgetSummary();

            Assert.AreEqual(budgetSummaryVm, result.Model);
            Assert.IsTrue(budgetSummaryVm.IsSaved);
            Assert.IsTrue(budgetSummaryVm.ExternallyLaunched);
        }
 public void RaiseBudgetCalculatorContinuedToPaymentEvent(BudgetSummaryVm vm, string userId, string employmentStatus, string housingStatus)
 {
     vm.GtmEvents.Add(new GtmEvent()
     {
         gtm_event                 = GtmEvents.BudgetCalculator,
         step                      = BudgetCalculatorSteps.Step6ContinuedToPayment,
         guid                      = userId,
         user_status               = String.IsNullOrEmpty(userId) ? "Not Logged In" : "Logged In",
         housing_status            = String.IsNullOrEmpty(housingStatus) ? null : housingStatus,
         employment_status         = String.IsNullOrEmpty(employmentStatus) ? null : employmentStatus,
         monthly_income            = vm.IncomeTotal,
         monthly_expenses          = vm.TotalExpenditure,
         monthly_disposable_income = vm.DisposableIncome
     });
 }
        public ActionResult MakePayment(Guid id)
        {
            Guid guid = Guid.Parse(id.ToString());

            IncomeAndExpenditure incomeAndExpenditure = ApplicationSessionState.GetIncomeAndExpenditure(guid);

            BudgetSummaryVm budgetSummary = GetBudgetSummary(incomeAndExpenditure, guid);

            if (budgetSummary != null && incomeAndExpenditure != null)
            {
                string employmentStatus = incomeAndExpenditure.EmploymentStatus;
                string housingStatus    = incomeAndExpenditure.HousingStatus;

                _gtmService.RaiseBudgetCalculatorContinuedToPaymentEvent(budgetSummary, LoggedInUserId, employmentStatus, housingStatus);
            }

            return(RedirectToAction("Index", "PaymentOptions", new { @id = id }));
        }
        public async Task SaveTest()
        {
            string id = Guid.NewGuid().ToString();

            this._controller.RouteData.Values.Add("id", id);
            this._portalSettings.Features.EnablePartialSave = true;

            IncomeAndExpenditure iAndE = new IncomeAndExpenditure()
            {
                HousingStatus    = "housing-status",
                EmploymentStatus = "employment-status"
            };

            BudgetSummary   budgetSummary   = new BudgetSummary();
            BudgetSummaryVm budgetSummaryVm = new BudgetSummaryVm();

            string lowellReference = "123456789";

            this._sessionState.Setup(x => x.CheckSessionStatus(id));
            this._sessionState.Setup(x => x.GetIncomeAndExpenditure(Guid.Parse(id))).Returns(iAndE);
            this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))).Returns(lowellReference);

            this._budgetCalculatorService.Setup(x => x.GetBudgetSummary(
                                                    iAndE, Guid.Parse(id), this._caseflowUserId)).Returns(budgetSummary);
            this._mapper.Setup(x => x.Map <BudgetSummary, BudgetSummaryVm>(budgetSummary)).Returns(budgetSummaryVm);
            this._budgetCalculatorService.Setup(x => x.SaveIncomeAndExpenditure(iAndE, lowellReference)).Returns(Task.CompletedTask);
            this._budgetCalculatorService.Setup(x => x.RemovePartialSaved(Guid.Parse(this._caseflowUserId))).Returns(Task.CompletedTask);

            ViewResult result = (ViewResult)await this._controller.Save();

            Assert.AreEqual("BudgetSummary", result.ViewName);
            Assert.AreEqual(budgetSummaryVm, result.Model);

            Assert.AreEqual(this._caseflowUserId, budgetSummaryVm.LoggedInUserId);
            Assert.IsTrue(budgetSummaryVm.IsSaved);
            Assert.AreEqual("housing-status", budgetSummaryVm.HousingStatus);
            Assert.AreEqual("employment-status", budgetSummaryVm.EmploymentStatus);
        }