ShouldApplyEmployeeDeductionWhenEmployeeNameBeginsWithA(
            Employee employee
            )
        {
            employee.Dependents = null;
            employee.Spouse     = null;
            employee.FirstName  = "Allen";
            var sut = new BenefitsCalculatorService();

            employee = sut.SetEmployeeCostsAndDeductions(employee);
            Assert.Equal(employee.YearlyNetBenefitsCost,
                         BenefitCosts.EmployeeBenefitsYearlyBaseCost -
                         (BenefitCosts.EmployeeBenefitsYearlyBaseCost * BenefitCosts.BeneficiaryYearlyDiscountForLetterA));
        }
        ShouldApplyNoDeductionsWhenEmployeeHasNoDependentsAndNameDoesNotBeginWithA(
            Employee employee
            )
        {
            employee.Dependents = null;
            employee.Spouse     = null;
            employee.FirstName  = "Steve";
            var sut = new BenefitsCalculatorService();

            employee = sut.SetEmployeeCostsAndDeductions(employee);
            Assert.Equal(employee.YearlyNetBenefitsCost, BenefitCosts.EmployeeBenefitsYearlyBaseCost);
            Assert.Equal(employee.PayPeriodNetBenefitsCost,
                         BenefitCosts.EmployeeBenefitsYearlyBaseCost / BenefitCosts.NumberOfPayPeriods);
        }
        ShouldIncludeSpouseCostWhenEmployeeIsMarriedWithNoDeductionsWhenNoNameBeginsWithA(
            Employee employee
            )
        {
            employee.Dependents = null;
            employee.Spouse     = new Dependent
            {
                FirstName = "Mary"
            };
            employee.FirstName = "Dave";
            var sut = new BenefitsCalculatorService();

            employee = sut.SetEmployeeCostsAndDeductions(employee);
            Assert.Equal(employee.TotalYearlyNetBenefitsCost,
                         BenefitCosts.EmployeeBenefitsYearlyBaseCost + BenefitCosts.DependentBenefitsYearlyBaseCost);
        }
        ShouldApplyDependentDeductionWhenDependentNameBeingsWithA(
            Employee employee
            )
        {
            employee.Spouse     = null;
            employee.Dependents = new List <Dependent>
            {
                new Dependent
                {
                    FirstName = "Annie"
                }
            };
            employee.FirstName = "Dave";
            var sut = new BenefitsCalculatorService();

            employee = sut.SetEmployeeCostsAndDeductions(employee);
            Assert.Equal(employee.TotalYearlyNetBenefitsCost,
                         BenefitCosts.EmployeeBenefitsYearlyBaseCost + (BenefitCosts.DependentBenefitsYearlyBaseCost * (1 - BenefitCosts.BeneficiaryYearlyDiscountForLetterA)));
        }
        ShouldIncludeDependentCostWhenEmployeeHasNoDependents(
            Employee employee
            )
        {
            employee.Spouse     = null;
            employee.Dependents = new List <Dependent>
            {
                new Dependent
                {
                    FirstName = "Skippy"
                },
                new Dependent
                {
                    FirstName = "Joey"
                }
            };
            employee.FirstName = "Dave";
            var sut = new BenefitsCalculatorService();

            employee = sut.SetEmployeeCostsAndDeductions(employee);
            Assert.Equal(employee.TotalYearlyNetBenefitsCost,
                         BenefitCosts.EmployeeBenefitsYearlyBaseCost + (BenefitCosts.DependentBenefitsYearlyBaseCost * 2));
        }