public async Task IndexTest()
        {
            string sessionId       = Guid.NewGuid().ToString();
            Guid   id              = Guid.NewGuid();
            string lowellReference = "123456789";

            IncomeAndExpenditure iAndE = new IncomeAndExpenditure();
            HouseholdStatusVm    vm    = new HouseholdStatusVm();

            this._sessionState.Setup(x => x.SessionId).Returns(sessionId);
            this._sessionState.Setup(x => x.AddLowellReferenceSurrogateKey(sessionId)).Returns(id);
            this._sessionState.SetupSet(x => x.IandELaunchedExternally = true);

            this._sessionState.Setup(x => x.GetIncomeAndExpenditure(id)).Returns(iAndE);
            this._mapper.Setup(x => x.Map <HouseholdStatusVm>(iAndE)).Returns(vm);

            this._sessionState.Setup(x => x.SaveIncomeAndExpenditure(iAndE, id));
            this._gtmService.Setup(x => x.RaiseBudgetCalculatorStartedEvent(vm, this._caseflowUserId));

            this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(id)).Returns(lowellReference);
            this._webActivityService.Setup(x => x.LogBudgetCalculatorIncome(lowellReference, this._caseflowUserId))
            .Returns(Task.CompletedTask);

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

            Assert.AreEqual(id, this._controller.RouteData.Values["id"]);
            Assert.AreEqual(vm, result.Model);
            Assert.AreEqual("HouseholdStatus", result.ViewName);

            Assert.AreEqual(true, vm.ExternallyLaunched);
            Assert.AreEqual(false, vm.SavedIAndE);
            Assert.AreEqual(1, vm.AdultsInHousehold);
        }
Esempio n. 2
0
        public void ConvertTest_SourceNull()
        {
            IncomeAndExpenditure source      = null;
            HouseholdStatusVm    destination = new HouseholdStatusVm()
            {
                AdultsInHousehold = Int32.MaxValue,
                ChildrenOver16    = Int32.MaxValue,
                ChildrenUnder16   = Int32.MaxValue,
                HousingStatus     = "test",
                GtmEvents         = new List <GtmEvent>()
                {
                    new GtmEvent()
                    {
                        account_ref = "test"
                    }
                },
                EmploymentStatus   = "test",
                ExternallyLaunched = true,
                PartialSavedIAndE  = true,
                SavedIAndE         = true
            };

            HouseholdStatusVm expected = Utilities.DeepCopy(destination);

            expected.AdultsInHousehold = 0;
            expected.ChildrenOver16    = 0;
            expected.ChildrenUnder16   = 0;
            expected.EmploymentStatus  = null;
            expected.HousingStatus     = null;

            HouseholdStatusVm result = _converter.Convert(source, destination, null);

            //Check result is as expected
            Assert.IsTrue(Utilities.DeepCompare(expected, result));
        }
        public async Task <IActionResult> Index()
        {
            // TODO: Is this correct ??!! You are adding Session ID to Lowell Ref!
            Guid id = ApplicationSessionState.AddLowellReferenceSurrogateKey(ApplicationSessionState.SessionId);

            ApplicationSessionState.IandELaunchedExternally = true;

            IncomeAndExpenditure incomeAndExpenditure = ApplicationSessionState.GetIncomeAndExpenditure(id);

            HouseholdStatusVm vm = new HouseholdStatusVm
            {
                ExternallyLaunched = true,
                SavedIAndE         = false,
                AdultsInHousehold  = 1
            };

            if (incomeAndExpenditure != null)
            {
                vm = _mapper.Map <HouseholdStatusVm>(incomeAndExpenditure);

                vm.ExternallyLaunched = true;
                vm.SavedIAndE         = false;
                vm.AdultsInHousehold  = 1;
                ApplicationSessionState.SaveIncomeAndExpenditure(incomeAndExpenditure, id);
            }

            _gtmService.RaiseBudgetCalculatorStartedEvent(vm, LoggedInUserId);
            await _webActivityService.LogBudgetCalculatorIncome(ApplicationSessionState.GetLowellReferenceFromSurrogate(id), LoggedInUserId);

            RouteData.Values.Add("id", id);

            return(View("HouseholdStatus", vm));
        }
        public async Task <IActionResult> HouseholdStatusPost(HouseholdStatusVm viewModel)
        {
            var id = RouteData.Values["id"];

            if (id == null)
            {
                return(RedirectToAction("Index", "MyAccounts"));
            }

            ApplicationSessionState.CheckSessionStatus(id.ToString());

            if (!ModelState.IsValid)
            {
                return(View("HouseholdStatus", viewModel));
            }

            Guid guid = Guid.Parse(id.ToString());

            IncomeAndExpenditure incomeAndExpenditure = ApplicationSessionState.GetIncomeAndExpenditure(guid);

            incomeAndExpenditure = _mapper.Map(viewModel, incomeAndExpenditure);
            ApplicationSessionState.SaveIncomeAndExpenditure(incomeAndExpenditure, guid);

            await _webActivityService.LogBudgetCalculatorIncome(ApplicationSessionState.GetLowellReferenceFromSurrogate(guid), LoggedInUserId);

            return(RedirectToAction("YourIncome", new { id }));
        }
        public async Task <IActionResult> HouseholdStatus(HouseholdStatusVm viewModel)
        {
            ModelState.Clear();
            ApplicationSessionState.IandELaunchedExternally = false;

            var id = RouteData.Values["id"];

            if (id == null)
            {
                return(RedirectToAction("Index", "MyAccounts"));
            }

            ApplicationSessionState.CheckSessionStatus(id.ToString());
            Guid guid = Guid.Parse(id.ToString());

            string lowellReference = ApplicationSessionState.GetLowellReferenceFromSurrogate(guid);

            Guid caseflowUserId = LoggedInUser.IsLoggedInUser ? Guid.Parse(GetCaseflowUserId()) : Guid.NewGuid();

            IncomeAndExpenditure savedIAndE = await _budgetCalculatorService.GetSavedIncomeAndExpenditure(lowellReference);

            IncomeAndExpenditure partialSavedIAndE = viewModel.PartialSavedIAndE ? await _budgetCalculatorService.GetPartiallySavedIncomeAndExpenditure(LoggedInUserId, caseflowUserId) : null;

            IncomeAndExpenditure iAndE = partialSavedIAndE != null ? partialSavedIAndE : savedIAndE;

            if (iAndE == null)
            {
                //See if there is a cached I & E from OpenWrks
                iAndE = this.ApplicationSessionState.GetIncomeAndExpenditure(guid);
            }

            if (iAndE != null)
            {
                iAndE.BudgetSource = "";

                ApplicationSessionState.SaveIncomeAndExpenditure(iAndE, guid);
                await _webActivityService.LogBudgetCalculatorReplayed(ApplicationSessionState.GetLoggedInLowellRef(), LoggedInUserId);

                viewModel                   = _mapper.Map(iAndE, viewModel);
                viewModel.SavedIAndE        = true;
                viewModel.PartialSavedIAndE = partialSavedIAndE != null;
            }

            await _webActivityService.LogBudgetCalculatorHouseholdDetails(lowellReference, LoggedInUserId);

            _gtmService.RaiseBudgetCalculatorStartedEvent(viewModel, LoggedInUserId);

            if (viewModel.AdultsInHousehold == null)
            {
                viewModel.AdultsInHousehold = 1;
            }

            return(View(viewModel));
        }
 public void RaiseBudgetCalculatorStartedEvent(HouseholdStatusVm vm, string userId)
 {
     vm.GtmEvents.Add(new GtmEvent()
     {
         gtm_event         = GtmEvents.BudgetCalculator,
         step              = BudgetCalculatorSteps.Step1Started,
         guid              = userId,
         user_status       = String.IsNullOrEmpty(userId) ? "Not Logged In" : "Logged In",
         housing_status    = vm == null ? null : String.IsNullOrEmpty(vm.HousingStatus) ? null : vm.HousingStatus,
         employment_status = vm == null ? null : String.IsNullOrEmpty(vm.EmploymentStatus) ? null : vm.EmploymentStatus
     });
 }
        public void HouseholdStatusVm_WithCircumstanceAndHousingStatusNotSet_FailsValidation()
        {
            var model = new HouseholdStatusVm()
            {
                EmploymentStatus = "Please select",
                HousingStatus    = "Please select"
            };

            var result = _validator.Validate(model);

            Assert.IsTrue(result.IsValid == false);
            Assert.AreEqual(result.Errors.Count, 2);
        }
        public void HouseholdStatusVm_WithCircumstanceAndHousingStatusSet_NoValidationErrors()
        {
            var model = new HouseholdStatusVm()
            {
                EmploymentStatus = "Employed",
                HousingStatus    = "Mortgage"
            };

            var result = _validator.Validate(model);

            Assert.IsTrue(result.IsValid);
            Assert.AreEqual(result.Errors.Count, 0);
        }
        public async Task HouseholdStatusTest_PartialIandENotNull()
        {
            string id = Guid.NewGuid().ToString();

            this._controller.RouteData.Values.Add("id", id);

            this._sessionState.SetupSet(x => x.IandELaunchedExternally = false);
            this._sessionState.Setup(x => x.CheckSessionStatus(id));

            string lowellReference = "123456789";

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

            IncomeAndExpenditure savedIandE = new IncomeAndExpenditure();

            this._budgetCalculatorService.Setup(x => x.GetSavedIncomeAndExpenditure(lowellReference))
            .Returns(Task.FromResult(savedIandE));

            IncomeAndExpenditure partiallySavedIandE = new IncomeAndExpenditure();

            this._budgetCalculatorService.Setup(x => x.GetPartiallySavedIncomeAndExpenditure(this._caseflowUserId, Guid.Parse(this._caseflowUserId)))
            .Returns(Task.FromResult(partiallySavedIandE));

            this._sessionState.Setup(x => x.SaveIncomeAndExpenditure(partiallySavedIandE, Guid.Parse(id)));
            this._sessionState.Setup(x => x.GetLoggedInLowellRef()).Returns(lowellReference);
            this._webActivityService.Setup(x => x.LogBudgetCalculatorReplayed(lowellReference, this._caseflowUserId))
            .Returns(Task.CompletedTask);

            HouseholdStatusVm vm = new HouseholdStatusVm()
            {
                PartialSavedIAndE = true
            };
            HouseholdStatusVm expectedVm = new HouseholdStatusVm()
            {
                PartialSavedIAndE = true
            };

            this._mapper.Setup(x => x.Map(partiallySavedIandE, vm)).Returns(expectedVm);

            this._webActivityService.Setup(x => x.LogBudgetCalculatorHouseholdDetails(lowellReference, this._caseflowUserId))
            .Returns(Task.CompletedTask);

            this._gtmService.Setup(x => x.RaiseBudgetCalculatorStartedEvent(expectedVm, this._caseflowUserId));

            ViewResult result = (ViewResult)await this._controller.HouseholdStatus(vm);

            Assert.AreEqual(expectedVm, result.Model);
            Assert.AreEqual(true, expectedVm.SavedIAndE);
            Assert.AreEqual(true, expectedVm.PartialSavedIAndE);
        }
        public void ConvertTest_SourceNull()
        {
            HouseholdStatusVm    source      = null;
            IncomeAndExpenditure destination = Utilities.CreateDefaultTestIAndE();
            IncomeAndExpenditure expected    = Utilities.DeepCopy(destination);

            expected.AdultsInHousehold = 0;
            expected.Children16to18    = 0;
            expected.ChildrenUnder16   = 0;
            expected.EmploymentStatus  = null;
            expected.HousingStatus     = null;

            IncomeAndExpenditure result = _converter.Convert(source, destination, null);

            //Check result is as expected
            Assert.IsTrue(Utilities.DeepCompare(expected, result));
        }
        public void ConvertTest_DestinationNull()
        {
            HouseholdStatusVm source = new HouseholdStatusVm()
            {
                AdultsInHousehold  = 1,
                ChildrenOver16     = 2,
                ChildrenUnder16    = 3,
                EmploymentStatus   = "employed-full-time",
                ExternallyLaunched = true,
                GtmEvents          = new List <GtmEvent>()
                {
                    new GtmEvent()
                    {
                        account_ref = "123456789"
                    }
                },
                HousingStatus     = "homeowner",
                PartialSavedIAndE = true,
                SavedIAndE        = true
            };

            //Create a copy of source for later
            HouseholdStatusVm sourceCopy = Utilities.DeepCopy(source);

            IncomeAndExpenditure destination = null;
            IncomeAndExpenditure expected    = new IncomeAndExpenditure();

            expected.AdultsInHousehold = 1;
            expected.Children16to18    = 2;
            expected.ChildrenUnder16   = 3;
            expected.EmploymentStatus  = "employed-full-time";
            expected.HousingStatus     = "homeowner";

            IncomeAndExpenditure result = _converter.Convert(source, destination, null);

            //Check result is as expected
            Assert.IsTrue(Utilities.DeepCompare(expected, result));

            //Check that source hasn't been modified
            Assert.IsTrue(Utilities.DeepCompare(source, sourceCopy));
        }
        public async Task HouseholdStatusPostTest_ModelInvalid()
        {
            string id = Guid.NewGuid().ToString();

            this._controller.RouteData.Values.Add("id", id);
            this._controller.ModelState.AddModelError("testing", "testing");

            HouseholdStatusVm vm = new HouseholdStatusVm()
            {
                AdultsInHousehold = 0,
            };

            string lowellReference = "123456789";

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

            ViewResult result = (ViewResult)await this._controller.HouseholdStatusPost(vm);

            Assert.AreEqual("HouseholdStatus", result.ViewName);
            Assert.AreEqual(vm, result.Model);
        }
        public async Task HouseholdStatusPostTest()
        {
            string id = Guid.NewGuid().ToString();

            this._controller.RouteData.Values.Add("id", id);

            HouseholdStatusVm vm = new HouseholdStatusVm()
            {
                AdultsInHousehold  = 1,
                ChildrenOver16     = 2,
                ChildrenUnder16    = 3,
                HousingStatus      = "homeowner",
                EmploymentStatus   = "full-time",
                ExternallyLaunched = false,
                GtmEvents          = new List <GtmEvent>(),
                PartialSavedIAndE  = false,
                SavedIAndE         = false
            };

            string lowellReference = "123456789";

            IncomeAndExpenditure iAndE = new IncomeAndExpenditure();

            this._sessionState.Setup(x => x.CheckSessionStatus(id));
            this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))).Returns(lowellReference);
            this._sessionState.Setup(x => x.GetIncomeAndExpenditure(Guid.Parse(id))).Returns(iAndE);
            this._mapper.Setup(x => x.Map(vm, iAndE)).Returns(iAndE);
            this._sessionState.Setup(x => x.SaveIncomeAndExpenditure(iAndE, Guid.Parse(id)));

            this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))).Returns(lowellReference);
            this._webActivityService.Setup(x => x.LogBudgetCalculatorIncome(lowellReference, this._caseflowUserId))
            .Returns(Task.CompletedTask);

            RedirectToActionResult result = (RedirectToActionResult)await this._controller.HouseholdStatusPost(vm);

            Assert.AreEqual("YourIncome", result.ActionName);
            Assert.AreEqual(id, result.RouteValues["id"]);
        }
Esempio n. 14
0
        public void ConvertTest()
        {
            IncomeAndExpenditure source = new IncomeAndExpenditure()
            {
                Mortgage             = 100,
                MortgageArrears      = 10,
                MortgageFrequency    = "monthly",
                Rental               = 150,
                RentalArrears        = 0,
                RentalFrequency      = "weekly",
                Electricity          = 200,
                ElectricityArrears   = 20,
                ElectricityFrequency = "fortnightly",
                CCJs                      = 250,
                CCJsArrears               = 0,
                CCJsFrequency             = "monthly",
                ChildMaintenance          = 300,
                ChildMaintenanceArrears   = 30,
                ChildMaintenanceFrequency = "weekly",
                CouncilTax                = 350,
                CouncilTaxArrears         = 0,
                CouncilTaxFrequency       = "fortnightly",
                CourtFines                = 400,
                CourtFinesArrears         = 40,
                CourtFinesFrequency       = "monthly",
                Gas                           = 450,
                GasArrears                    = 0,
                GasFrequency                  = "weekly",
                OtherUtilities                = 500,
                OtherUtilitiesArrears         = 50,
                OtherUtilitiesFrequency       = "fortnightly",
                Rent                          = 550,
                RentArrears                   = 0,
                RentFrequency                 = "monthly",
                SecuredLoans                  = 600,
                SecuredloansArrears           = 60,
                SecuredLoansFrequency         = "weekly",
                TvLicence                     = 650,
                TvLicenceArrears              = 0,
                TvLicenceFrequency            = "fortnightly",
                Water                         = 700,
                WaterArrears                  = 70,
                WaterFrequency                = "monthly",
                AdultsInHousehold             = 1,
                ChildrenUnder16               = 2,
                Children16to18                = 3,
                HasArrears                    = true,
                UtilitiesTotal                = 750,
                UtilitiesTotalArrears         = 0,
                UtilitiesTotalFrequency       = "weekly",
                User                          = "******",
                Created                       = DateTime.Now.Date,
                Healthcare                    = 800,
                HealthcareFrequency           = "fortnightly",
                HomeContents                  = 850,
                HomeContentsArrears           = 0,
                HomeContentsFrequency         = "monthly",
                EmploymentStatus              = "student",
                Housekeeping                  = 900,
                HousekeepingFrequency         = "monthly",
                HousingStatus                 = "homeowner",
                DisposableIncome              = 999.99M,
                BenefitsTotal                 = 888.88M,
                BenefitsTotalFrequency        = "monthly",
                Leisure                       = 50,
                LeisureFrequency              = "weekly",
                OtherDebts                    = new List <SaveOtherDebts>(),
                OtherExpenditure              = 60,
                OtherExpenditureFrequency     = "fortnightly",
                OtherIncome                   = 500,
                OtherincomeFrequency          = "monthly",
                LowellReference               = "123456789",
                EarningsTotal                 = 10000,
                EarningsTotalFrequency        = "monthly",
                PersonalCosts                 = 225,
                PersonalCostsFrequency        = "monthly",
                Pension                       = 400,
                PensionFrequency              = "monthly",
                Salary                        = 9999,
                SalaryFrequency               = "monthly",
                SavingsContributions          = 55,
                SavingsContributionsFrequency = "weekly",
                SchoolCosts                   = 5,
                SchoolCostsFrequency          = "weekly",
                Travel                        = 45,
                TravelFrequency               = "fortnightly",
                ProfessionalCosts             = 123,
                ProfessionalCostsFrequency    = "monthly",
                IncomeTotal                   = 1234.56M,
                PensionInsurance              = 75,
                PensionInsuranceFrequency     = "monthly",
                ExpenditureTotal              = 1000
            };

            //Create a copy of source for later
            IncomeAndExpenditure sourceCopy = Utilities.DeepCopy(source);

            HouseholdStatusVm destination = new HouseholdStatusVm()
            {
                AdultsInHousehold = Int32.MaxValue,
                ChildrenOver16    = Int32.MaxValue,
                ChildrenUnder16   = Int32.MaxValue,
                HousingStatus     = "test",
                GtmEvents         = new List <GtmEvent>()
                {
                    new GtmEvent()
                    {
                        account_ref = "test"
                    }
                },
                EmploymentStatus   = "test",
                ExternallyLaunched = true,
                PartialSavedIAndE  = true,
                SavedIAndE         = true
            };

            HouseholdStatusVm expected = Utilities.DeepCopy(destination);

            expected.AdultsInHousehold = 1;
            expected.ChildrenOver16    = 3;
            expected.ChildrenUnder16   = 2;
            expected.EmploymentStatus  = "student";
            expected.HousingStatus     = "homeowner";

            HouseholdStatusVm result = _converter.Convert(source, destination, null);

            //Check that the result is as expected
            Assert.IsTrue(Utilities.DeepCompare(expected, result));

            //Check that source hasn't been modified
            Assert.IsTrue(Utilities.DeepCompare(source, sourceCopy));
        }