public async Task ExpenditurePostTest_SaveForLater() { string id = Guid.NewGuid().ToString(); this._controller.RouteData.Values.Add("id", id); this._portalSettings.Features.EnablePartialSave = true; ExpendituresVm vm = new ExpendituresVm(); IncomeAndExpenditure iAndE = new IncomeAndExpenditure(); this._sessionState.Setup(x => x.CheckSessionStatus(id)); 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))); string lowellReference = "123456789"; this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))) .Returns(lowellReference); this._webActivityService.Setup(x => x.LogBudgetCalculatorCompleted(lowellReference, this._caseflowUserId)) .Returns(Task.CompletedTask); this._budgetCalculatorService.Setup(x => x.PartiallySaveIncomeAndExpenditure( iAndE, lowellReference, Guid.Parse(this._caseflowUserId))).Returns(Task.FromResult(true)); ViewResult result = (ViewResult)await this._controller .ExpenditurePost(vm, "saveforlater"); Assert.IsTrue(vm.EnabledPartialSave); Assert.IsTrue(vm.PartialSavedIAndE); Assert.IsFalse(vm.HasErrorPartialSavedIAndE); Assert.AreEqual("Expenditure", result.ViewName); Assert.AreEqual(vm, result.Model); }
public void ConvertTest_SourceNull() { ExpendituresVm source = null; IncomeAndExpenditure destination = Utilities.CreateDefaultTestIAndE(); IncomeAndExpenditure expected = Utilities.DeepCopy(destination); expected.Healthcare = 0; expected.HealthcareFrequency = null; expected.Leisure = 0; expected.LeisureFrequency = null; expected.Housekeeping = 0; expected.HousekeepingFrequency = null; expected.OtherExpenditure = 0; expected.OtherExpenditureFrequency = null; expected.PensionInsurance = 0; expected.PensionInsuranceFrequency = null; expected.PersonalCosts = 0; expected.PersonalCostsFrequency = null; expected.ProfessionalCosts = 0; expected.ProfessionalCostsFrequency = null; expected.SavingsContributions = 0; expected.SavingsContributionsFrequency = null; expected.SchoolCosts = 0; expected.SchoolCostsFrequency = null; expected.Travel = 0; expected.TravelFrequency = null; IncomeAndExpenditure result = _converter.Convert(source, destination, null); //Check result is as expected Assert.IsTrue(Utilities.DeepCompare(expected, result)); }
public async Task ExpenditurePostTest_InvalidModelState() { string id = Guid.NewGuid().ToString(); this._controller.RouteData.Values.Add("id", id); this._controller.ModelState.AddModelError("testing", "testing"); this._portalSettings.Features.EnablePartialSave = true; ExpendituresVm vm = new ExpendituresVm(); IncomeAndExpenditure iAndE = new IncomeAndExpenditure(); MonthlyIncome monthlyIncome = new MonthlyIncome(); MonthlyIncomeVm monthlyIncomeVm = new MonthlyIncomeVm(); MonthlyOutgoings monthlyOutgoings = new MonthlyOutgoings(); MonthlyOutgoingsVm monthlyOutgoingsVm = new MonthlyOutgoingsVm(); this._sessionState.Setup(x => x.CheckSessionStatus(id)); 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._calculatorService.Setup(x => x.CalculateMonthlyIncome(iAndE)).Returns(monthlyIncome); this._calculatorService.Setup(x => x.CalculateMonthlyOutgoings(iAndE)).Returns(monthlyOutgoings); this._mapper.Setup(x => x.Map <MonthlyIncome, MonthlyIncomeVm>(monthlyIncome)) .Returns(monthlyIncomeVm); this._mapper.Setup(x => x.Map <MonthlyOutgoings, MonthlyOutgoingsVm>(monthlyOutgoings)) .Returns(monthlyOutgoingsVm); ViewResult result = (ViewResult)await this._controller.ExpenditurePost(vm, "testing"); Assert.AreEqual("Expenditure", result.ViewName); Assert.AreEqual(vm, result.Model); Assert.AreEqual(vm.IncomeVmSummary, monthlyIncomeVm); Assert.AreEqual(vm.OutgoingsVmSummary, monthlyOutgoingsVm); Assert.IsTrue(vm.EnabledPartialSave); }
public async Task ExpenditurePostTest() { string id = Guid.NewGuid().ToString(); this._controller.RouteData.Values.Add("id", id); this._portalSettings.Features.EnablePartialSave = true; ExpendituresVm vm = new ExpendituresVm(); IncomeAndExpenditure iAndE = new IncomeAndExpenditure(); this._sessionState.Setup(x => x.CheckSessionStatus(id)); 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))); string lowellReference = "123456789"; this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))) .Returns(lowellReference); this._webActivityService.Setup(x => x.LogBudgetCalculatorCompleted(lowellReference, this._caseflowUserId)) .Returns(Task.CompletedTask); RedirectToActionResult result = (RedirectToActionResult)await this._controller .ExpenditurePost(vm, "testing"); Assert.IsTrue(vm.EnabledPartialSave); Assert.AreEqual("BudgetSummary", result.ActionName); Assert.AreEqual(id, result.RouteValues["id"]); }
public void ConvertTest_SourceNull() { IncomeAndExpenditure source = null; ExpendituresVm destination = Utilities.CreateDefaultTestExpendituresVm(); ExpendituresVm expected = Utilities.DeepCopy(destination); MonthlyIncome monthlyIncome = new MonthlyIncome(); MonthlyIncomeVm monthlyIncomeVm = new MonthlyIncomeVm() { Benefits = 100, Other = 200, Pension = 300, Salary = 400, Total = 1000 }; MonthlyOutgoings monthlyOutgoings = new MonthlyOutgoings(); MonthlyOutgoingsVm monthlyOutgoingsVm = new MonthlyOutgoingsVm() { Expenditures = 1000, HouseholdBills = 2000, Total = 3000 }; _calculatorService.Setup(x => x.CalculateMonthlyIncome(It.IsAny <IncomeAndExpenditure>())) .Returns(monthlyIncome); _mapper.Setup(x => x.Map <MonthlyIncomeVm>(monthlyIncome)).Returns(monthlyIncomeVm); _calculatorService.Setup(x => x.CalculateMonthlyOutgoings(It.IsAny <IncomeAndExpenditure>())) .Returns(monthlyOutgoings); _mapper.Setup(x => x.Map <MonthlyOutgoingsVm>(monthlyOutgoings)).Returns(monthlyOutgoingsVm); expected.CareAndHealthCosts.Amount = 0; expected.CareAndHealthCosts.Frequency = null; expected.CommunicationsAndLeisure.Amount = 0; expected.CommunicationsAndLeisure.Frequency = null; expected.FoodAndHouseKeeping.Amount = 0; expected.FoodAndHouseKeeping.Frequency = null; expected.IncomeVmSummary = monthlyIncomeVm; expected.Other.Amount = 0; expected.Other.Frequency = null; expected.OutgoingsVmSummary = monthlyOutgoingsVm; expected.PensionsAndInsurance.Amount = 0; expected.PensionsAndInsurance.Frequency = null; expected.PersonalCosts.Amount = 0; expected.PersonalCosts.Frequency = null; expected.Professional.Amount = 0; expected.Professional.Frequency = null; expected.Savings.Amount = 0; expected.Savings.Frequency = null; expected.SchoolCosts.Amount = 0; expected.SchoolCosts.Frequency = null; expected.TravelAndTransport.Amount = 0; expected.TravelAndTransport.Frequency = null; ExpendituresVm result = _converter.Convert(source, destination, null); //Check result is as expected Assert.IsTrue(Utilities.DeepCompare(expected, result)); }
public async Task <IActionResult> ExpenditurePost(ExpendituresVm viewModel, string submit) { if (submit == "saveforlater") { viewModel.PartialSavedEvent = true; } var id = RouteData.Values["id"]; if (id == null) { return(RedirectToAction("Index", "MyAccounts")); } Guid guid = Guid.Parse(id.ToString()); ApplicationSessionState.CheckSessionStatus(id.ToString()); viewModel.EnabledPartialSave = _portalSettings.Features.EnablePartialSave && LoggedInUser.IsLoggedInUser; var incomeExpenditure = ApplicationSessionState.GetIncomeAndExpenditure(guid); incomeExpenditure = _mapper.Map(viewModel, incomeExpenditure); ApplicationSessionState.SaveIncomeAndExpenditure(incomeExpenditure, guid); if (!ModelState.IsValid) { MonthlyIncome monthlyIncome = _calculatorService.CalculateMonthlyIncome(incomeExpenditure); MonthlyOutgoings monthlyOutgoings = _calculatorService.CalculateMonthlyOutgoings(incomeExpenditure); viewModel.IncomeVmSummary = _mapper.Map <MonthlyIncome, MonthlyIncomeVm>(monthlyIncome); viewModel.OutgoingsVmSummary = _mapper.Map <MonthlyOutgoings, MonthlyOutgoingsVm>(monthlyOutgoings); return(View("Expenditure", viewModel)); } string lowellReference = ApplicationSessionState.GetLowellReferenceFromSurrogate(guid); await _webActivityService.LogBudgetCalculatorCompleted(lowellReference, LoggedInUserId); if (submit == "saveforlater" && LoggedInUser.IsLoggedInUser && _portalSettings.Features.EnablePartialSave) { bool isPartialSaved = await PartialSave(incomeExpenditure, lowellReference); viewModel.PartialSavedIAndE = isPartialSaved; viewModel.HasErrorPartialSavedIAndE = !isPartialSaved; return(View("Expenditure", viewModel)); } return(RedirectToAction("BudgetSummary", new { id })); }
public async Task <IActionResult> Expenditure(ExpendituresVm viewModel) { var id = RouteData.Values["id"]; if (id == null) { return(RedirectToAction("Index", "MyAccounts")); } Guid guid = Guid.Parse(id.ToString()); ApplicationSessionState.CheckSessionStatus(id.ToString()); viewModel.EnabledPartialSave = _portalSettings.Features.EnablePartialSave && LoggedInUser.IsLoggedInUser; IncomeAndExpenditure iAndE = ApplicationSessionState.GetIncomeAndExpenditure(guid); var guideLines = await _triggerFigureService.GetExpenditureMetrics(ApplicationSessionState); var foodAndHousekeepingTrigger = _triggerFigureService.CalculateTriggerFigure(guideLines.FoodAndHousekeeping, iAndE.AdultsInHousehold, iAndE.ChildrenUnder16, iAndE.Children16to18); var personalCostsTrigger = _triggerFigureService.CalculateTriggerFigure(guideLines.PersonalCosts, iAndE.AdultsInHousehold, iAndE.ChildrenUnder16, iAndE.Children16to18); var communicationsAndLeisureTrigger = _triggerFigureService.CalculateTriggerFigure(guideLines.CommsAndLeisure, iAndE.AdultsInHousehold, iAndE.ChildrenUnder16, iAndE.Children16to18); viewModel = _mapper.Map(iAndE, viewModel); viewModel.FoodAndHouseKeepingTriggerMin = _triggerFigureService.CalculateMinTriggerValue(foodAndHousekeepingTrigger); viewModel.FoodAndHouseKeepingTriggerMax = _triggerFigureService.CalculateMaxTriggerValue(foodAndHousekeepingTrigger); viewModel.PersonalCostsTriggerMin = _triggerFigureService.CalculateMinTriggerValue(personalCostsTrigger); viewModel.PersonalCostsTriggerMax = _triggerFigureService.CalculateMaxTriggerValue(personalCostsTrigger); viewModel.CommunicationsAndLeisureTriggerMin = _triggerFigureService.CalculateMinTriggerValue(communicationsAndLeisureTrigger); viewModel.CommunicationsAndLeisureTriggerMax = _triggerFigureService.CalculateMaxTriggerValue(communicationsAndLeisureTrigger); string employmentStatus = iAndE.EmploymentStatus; string housingStatus = iAndE.HousingStatus; decimal income = viewModel.IncomeVmSummary.Total; decimal totalExpenditure = viewModel.OutgoingsVmSummary.Total; decimal disposableIncome = _calculatorService.CalculateDisposableIncome(income, totalExpenditure); _gtmService.RaiseBudgetCalculatorExpenditureEvent(viewModel, LoggedInUserId, employmentStatus, housingStatus, income, totalExpenditure, disposableIncome); return(View(viewModel)); }
public void ConvertTest() { ExpendituresVm source = new ExpendituresVm() { CareAndHealthCosts = new ExpenditureSourceVm() { Amount = 100, Frequency = "monthly" }, CommunicationsAndLeisure = new ExpenditureSourceVm() { Amount = 150, Frequency = "weekly" }, FoodAndHouseKeeping = new ExpenditureSourceVm() { Amount = 200, Frequency = "fortnightly" }, Other = new ExpenditureSourceVm() { Amount = 250, Frequency = "monthly" }, PensionsAndInsurance = new ExpenditureSourceVm() { Amount = 300, Frequency = "weekly" }, PersonalCosts = new ExpenditureSourceVm() { Amount = 350, Frequency = "fortnightly" }, Professional = new ExpenditureSourceVm() { Amount = 400, Frequency = "monthly" }, Savings = new ExpenditureSourceVm() { Amount = 450, Frequency = "weekly" }, SchoolCosts = new ExpenditureSourceVm() { Amount = 500, Frequency = "fortnightly" }, TravelAndTransport = new ExpenditureSourceVm() { Amount = 550, Frequency = "monthly" }, EnabledPartialSave = true, GtmEvents = new List <GtmEvent>() { new GtmEvent() { account_ref = "123456789" } }, IncomeVmSummary = new MonthlyIncomeVm() { Benefits = 100, Other = 200, Pension = 300, Salary = 400, Total = 1000 }, OutgoingsVmSummary = new MonthlyOutgoingsVm() { Expenditures = 1000, HouseholdBills = 2000, Total = 3000 }, CommunicationsAndLeisureTriggerMax = 456, CommunicationsAndLeisureTriggerMin = 123, HasErrorPartialSavedIAndE = true, FoodAndHouseKeepingTriggerMin = 567, FoodAndHouseKeepingTriggerMax = 789, PartialSavedEvent = true, PartialSavedIAndE = true, PersonalCostsTriggerMax = 234, PersonalCostsTriggerMin = 567 }; //Create a copy of source for later ExpendituresVm sourceCopy = Utilities.DeepCopy(source); IncomeAndExpenditure destination = Utilities.CreateDefaultTestIAndE(); IncomeAndExpenditure expected = Utilities.DeepCopy(destination); expected.Healthcare = 100; expected.HealthcareFrequency = "monthly"; expected.Leisure = 150; expected.LeisureFrequency = "weekly"; expected.Housekeeping = 200; expected.HousekeepingFrequency = "fortnightly"; expected.OtherExpenditure = 250; expected.OtherExpenditureFrequency = "monthly"; expected.PensionInsurance = 300; expected.PensionInsuranceFrequency = "weekly"; expected.PersonalCosts = 350; expected.PersonalCostsFrequency = "fortnightly"; expected.ProfessionalCosts = 400; expected.ProfessionalCostsFrequency = "monthly"; expected.SavingsContributions = 450; expected.SavingsContributionsFrequency = "weekly"; expected.SchoolCosts = 500; expected.SchoolCostsFrequency = "fortnightly"; expected.Travel = 550; expected.TravelFrequency = "monthly"; 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 ExpendituresTest() { string id = Guid.NewGuid().ToString(); this._controller.RouteData.Values.Add("id", id); this._portalSettings.Features.EnablePartialSave = true; this._sessionState.Setup(x => x.CheckSessionStatus(id)); IncomeAndExpenditure iAndE = new IncomeAndExpenditure() { AdultsInHousehold = 1, Children16to18 = 2, ChildrenUnder16 = 3, EmploymentStatus = "employment-status", HousingStatus = "housing-status" }; ExpendituresVm vm = new ExpendituresVm() { IncomeVmSummary = new MonthlyIncomeVm() { Benefits = 100, Other = 200, Pension = 300, Salary = 400, Total = 1000 }, OutgoingsVmSummary = new MonthlyOutgoingsVm() { Expenditures = 1000, HouseholdBills = 2000, Total = 3000 } }; ExpenditureMetrics expenditureMetrics = new ExpenditureMetrics() { CommsAndLeisure = new ExpenditureMetric(), FoodAndHousekeeping = new ExpenditureMetric(), PersonalCosts = new ExpenditureMetric() }; this._sessionState.Setup(x => x.GetIncomeAndExpenditure(Guid.Parse(id))).Returns(iAndE); this._triggerFigureService.Setup(x => x.GetExpenditureMetrics(this._sessionState.Object)) .Returns(Task.FromResult(expenditureMetrics)); this._triggerFigureService.Setup(x => x.CalculateTriggerFigure(expenditureMetrics.FoodAndHousekeeping, 1, 3, 2)) .Returns(100); this._triggerFigureService.Setup(x => x.CalculateTriggerFigure(expenditureMetrics.PersonalCosts, 1, 3, 2)) .Returns(200); this._triggerFigureService.Setup(x => x.CalculateTriggerFigure(expenditureMetrics.CommsAndLeisure, 1, 3, 2)) .Returns(300); this._mapper.Setup(x => x.Map(iAndE, vm)).Returns(vm); this._triggerFigureService.Setup(x => x.CalculateMinTriggerValue(100)).Returns(80); this._triggerFigureService.Setup(x => x.CalculateMaxTriggerValue(100)).Returns(120); this._triggerFigureService.Setup(x => x.CalculateMinTriggerValue(200)).Returns(160); this._triggerFigureService.Setup(x => x.CalculateMaxTriggerValue(200)).Returns(240); this._triggerFigureService.Setup(x => x.CalculateMinTriggerValue(300)).Returns(180); this._triggerFigureService.Setup(x => x.CalculateMaxTriggerValue(300)).Returns(360); this._calculatorService.Setup(x => x.CalculateDisposableIncome(1000, 3000)).Returns(1500); this._gtmService.Setup(x => x.RaiseBudgetCalculatorExpenditureEvent( vm, this._caseflowUserId, "employment-status", "housing-status", 1000, 3000, 1500)); ViewResult result = (ViewResult)await this._controller.Expenditure(vm); Assert.AreEqual(vm, result.Model); Assert.IsTrue(vm.EnabledPartialSave); Assert.AreEqual(vm.FoodAndHouseKeepingTriggerMin, 80); Assert.AreEqual(vm.FoodAndHouseKeepingTriggerMax, 120); Assert.AreEqual(vm.PersonalCostsTriggerMin, 160); Assert.AreEqual(vm.PersonalCostsTriggerMax, 240); Assert.AreEqual(vm.CommunicationsAndLeisureTriggerMin, 180); Assert.AreEqual(vm.CommunicationsAndLeisureTriggerMax, 360); }
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); ExpendituresVm destination = Utilities.CreateDefaultTestExpendituresVm(); ExpendituresVm expected = Utilities.DeepCopy(destination); MonthlyIncome monthlyIncome = new MonthlyIncome(); MonthlyIncomeVm monthlyIncomeVm = new MonthlyIncomeVm() { Benefits = 100, Other = 200, Pension = 300, Salary = 400, Total = 1000 }; MonthlyOutgoings monthlyOutgoings = new MonthlyOutgoings(); MonthlyOutgoingsVm monthlyOutgoingsVm = new MonthlyOutgoingsVm() { Expenditures = 1000, HouseholdBills = 2000, Total = 3000 }; _calculatorService.Setup(x => x.CalculateMonthlyIncome(source)) .Returns(monthlyIncome); _mapper.Setup(x => x.Map <MonthlyIncomeVm>(monthlyIncome)).Returns(monthlyIncomeVm); _calculatorService.Setup(x => x.CalculateMonthlyOutgoings(source)) .Returns(monthlyOutgoings); _mapper.Setup(x => x.Map <MonthlyOutgoingsVm>(monthlyOutgoings)).Returns(monthlyOutgoingsVm); expected.CareAndHealthCosts.Amount = 800; expected.CareAndHealthCosts.Frequency = "fortnightly"; expected.CommunicationsAndLeisure.Amount = 50; expected.CommunicationsAndLeisure.Frequency = "weekly"; expected.FoodAndHouseKeeping.Amount = 900; expected.FoodAndHouseKeeping.Frequency = "monthly"; expected.IncomeVmSummary = monthlyIncomeVm; expected.Other.Amount = 60; expected.Other.Frequency = "fortnightly"; expected.OutgoingsVmSummary = monthlyOutgoingsVm; expected.PensionsAndInsurance.Amount = 75; expected.PensionsAndInsurance.Frequency = "monthly"; expected.PersonalCosts.Amount = 225; expected.PersonalCosts.Frequency = "monthly"; expected.Professional.Amount = 123; expected.Professional.Frequency = "monthly"; expected.Savings.Amount = 55; expected.Savings.Frequency = "weekly"; expected.SchoolCosts.Amount = 5; expected.SchoolCosts.Frequency = "weekly"; expected.TravelAndTransport.Amount = 45; expected.TravelAndTransport.Frequency = "fortnightly"; ExpendituresVm 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)); }