public void Constructor_ValidModel_ExpectPresentation() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); var summary = new BudgetSummary(budget, ratios); var viewModel = new BudgetSummaryViewModel(summary); viewModel.Width.Should().Be(summary.Width); viewModel.HousingGroupWidth.Should().Be(summary.HousingGroupWidth); viewModel.TransportationGroupWidth.Should().Be(summary.TransportationGroupWidth); viewModel.FoodGroupWidth.Should().Be(summary.FoodGroupWidth); viewModel.PersonalGroupWidth.Should().Be(summary.PersonalGroupWidth); viewModel.GivingGroupWidth.Should().Be(summary.GivingGroupWidth); viewModel.DebtGroupWidth.Should().Be(summary.DebtGroupWidth); viewModel.TransportationGroupOffset.Should().Be(summary.TransportationGroupOffset); viewModel.FoodGroupOffset.Should().Be(summary.FoodGroupOffset); viewModel.PersonalGroupOffset.Should().Be(summary.PersonalGroupOffset); viewModel.GivingGroupOffset.Should().Be(summary.GivingGroupOffset); viewModel.DebtGroupOffset.Should().Be(summary.DebtGroupOffset); viewModel.BudgetDelta.Should().Be(summary.BudgetDelta.ToCurrencyString()); viewModel.IsOverBudget.Should().Be(summary.IsOverBudget); viewModel.IsUnderBudget.Should().Be(summary.IsUnderBudget); viewModel.IsOnBudget.Should().Be(summary.IsOnBudget); }
public void Constructor_ValidModel_ExpectPresentation() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); var summary = new BudgetSummary(budget, ratios); summary.HousingGroupWidth.Should().Be(summary.Width); summary.TransportationGroupWidth.Should().Be(summary.Width); summary.FoodGroupWidth.Should().Be(summary.Width); summary.PersonalGroupWidth.Should().Be(summary.Width); summary.GivingGroupWidth.Should().Be(summary.Width); summary.DebtGroupWidth.Should().Be(summary.Width); summary.TransportationGroupOffset.Should().Be(summary.HousingGroupWidth); summary.FoodGroupOffset.Should().Be(summary.TransportationGroupOffset + summary.TransportationGroupWidth); summary.PersonalGroupOffset.Should().Be(summary.FoodGroupOffset + summary.FoodGroupWidth); summary.GivingGroupOffset.Should().Be(summary.PersonalGroupOffset + summary.PersonalGroupWidth); summary.DebtGroupOffset.Should().Be(summary.GivingGroupOffset + summary.GivingGroupWidth); summary.BudgetDelta.Should().Be(0m); summary.IsOverBudget.Should().Be(false); summary.IsUnderBudget.Should().Be(false); summary.IsOnBudget.Should().Be(true); }
public void GroupRatios_FullAmount_ExpectOneRatio() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); budget.IncomeGroup.BudgetItems[0].Amount = 200m; budget.HousingGroup.BudgetItems[0].Amount = 200m; ratios.HousingGroupRatio.Should().Be(1); }
[Fact] public void GroupRatios_HalfwayAmount_ExpectOneHalfRatio() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); budget.IncomeGroup.BudgetItems[0].Amount = 200m; budget.HousingGroup.BudgetItems[1].Amount = 100; ratios.HousingGroupRatio.Should().Be(0.5); }
public void Constructor_NullBudget_ExpectException() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); // TEST: construct view model Action testAction = () => new BudgetSummary(null, ratios); testAction.Should().Throw <ArgumentNullException>(); }
public void HousingGroupWidth_MoreWidthsAndRatios_MatchesExpectResult() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); var summary = new BudgetSummary(budget, ratios); budget.IncomeGroup.BudgetItems[0].Amount = 100; budget.HousingGroup.BudgetItems[0].Amount = 75; budget.FoodGroup.BudgetItems[0].Amount = 25; summary.HousingGroupWidth.Should().Be(summary.Width * 0.75); summary.FoodGroupWidth.Should().Be(summary.Width * 0.25); summary.FoodGroupOffset.Should().Be(summary.HousingGroupWidth); }
public void PropertyChanged_BudgetGroupAmountChanged_ExpectRatioChangedEvent() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); bool wasNotified = false; ratios.PropertyChanged += (sender, args) => { if (args.PropertyName == BudgetRatio.RatioChangedProperty) { wasNotified = true; } }; budget.IncomeGroup.BudgetItems[0].Amount = 100m; wasNotified.Should().BeTrue(); wasNotified = false; budget.HousingGroup.BudgetItems[0].Amount = 1m; wasNotified.Should().BeTrue(); wasNotified = false; budget.TransportationGroup.BudgetItems[0].Amount = 1m; wasNotified.Should().BeTrue(); wasNotified = false; budget.FoodGroup.BudgetItems[0].Amount = 1m; wasNotified.Should().BeTrue(); wasNotified = false; budget.PersonalGroup.BudgetItems[0].Amount = 1m; wasNotified.Should().BeTrue(); wasNotified = false; budget.DebtGroup.BudgetItems[0].Amount = 1m; wasNotified.Should().BeTrue(); wasNotified = false; budget.GivingGroup.BudgetItems[0].Amount = 1m; wasNotified.Should().BeTrue(); }
public void GroupRatios_VariousAmount_CorrectRatios() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); budget.IncomeGroup.BudgetItems[0].Amount = 100m; budget.HousingGroup.BudgetItems[0].Amount = 1m; budget.TransportationGroup.BudgetItems[0].Amount = 2m; budget.FoodGroup.BudgetItems[0].Amount = 3m; budget.PersonalGroup.BudgetItems[0].Amount = 4m; budget.DebtGroup.BudgetItems[0].Amount = 5m; budget.GivingGroup.BudgetItems[0].Amount = 6m; ratios.HousingGroupRatio.Should().Be(0.01); ratios.TransportationGroupRatio.Should().Be(0.02); ratios.FoodGroupRatio.Should().Be(0.03); ratios.PersonalGroupRatio.Should().Be(0.04); ratios.DebtGroupRatio.Should().Be(0.05); ratios.GivingGroupRatio.Should().Be(0.06); }
public void GroupRatios_ZeroValues_ExpectOneRatios() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); //some ratios budget.IncomeGroup.BudgetItems[0].Amount = 0; budget.HousingGroup.BudgetItems[0].Amount = -1; budget.TransportationGroup.BudgetItems[0].Amount = 123.4m; budget.FoodGroup.BudgetItems[0].Amount = 0; budget.PersonalGroup.BudgetItems[0].Amount = 0; budget.DebtGroup.BudgetItems[0].Amount = 0; budget.GivingGroup.BudgetItems[0].Amount = 0; ratios.HousingGroupRatio.Should().Be(1); ratios.TransportationGroupRatio.Should().Be(1); ratios.FoodGroupRatio.Should().Be(1); ratios.PersonalGroupRatio.Should().Be(1); ratios.DebtGroupRatio.Should().Be(1); ratios.GivingGroupRatio.Should().Be(1); }