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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        [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);
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }