示例#1
0
        public void SetUp()
        {
            var grossSalaryCalculator = new GrossSalaryCalculator();
            var nationalInsurance     = new NationalInsuranceCalculator();
            var taxCalculator         = new TaxCalculator();

            _salarySlipGenerator = new SalarySlipGenerator(grossSalaryCalculator, nationalInsurance, taxCalculator);
        }
示例#2
0
        public void generate_salary_slip_for_employee_with_basic_case_scenario()
        {
            //Iteration 1: for an annual salary of £5,000.00
            var employee = new Employee(id: EmployeeId, name: EmployeeName, annualGrossSalary: 5000);

            var salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(416.67m, salarySlip.MonthlyGrossSalary);
        }
示例#3
0
        public void generate_salary_slip_for_employee_with_basic_national_insurance()
        {
            //Iteration 2: for an annual gross salary of £9,060.00
            var employee = new Employee(id: EmployeeId, name: EmployeeName, annualGrossSalary: 9060);

            var salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(755.00m, salarySlip.MonthlyGrossSalary);
            Assert.AreEqual(10.00m, salarySlip.NationalInsurance);
        }
示例#4
0
        public void generate_a_monthly_salary_slip_for_the_employee(Employee employee, SalarySlip expectedSalarySlip)
        {
            SalarySlip salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(expectedSalarySlip.EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(expectedSalarySlip.EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(expectedSalarySlip.MonthlyGrossSalary, salarySlip.MonthlyGrossSalary);
            Assert.AreEqual(expectedSalarySlip.NationalInsurance, salarySlip.NationalInsurance);
            Assert.AreEqual(expectedSalarySlip.TaxfreeAllowance, salarySlip.TaxfreeAllowance);
            Assert.AreEqual(expectedSalarySlip.TaxableIncome, salarySlip.TaxableIncome);
            Assert.AreEqual(expectedSalarySlip.TaxPayable, salarySlip.TaxPayable);
        }
示例#5
0
        public void generate_salary_slip_for_employee_with_additional_tax()
        {
            //Iteration 9: for an annual gross salary of £160,000.00
            var employee = new Employee(id: EmployeeId, name: EmployeeName, annualGrossSalary: 160000);

            var salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(13333.33m, salarySlip.MonthlyGrossSalary);
            Assert.AreEqual(544.40m, salarySlip.NationalInsurance);
            Assert.AreEqual(0.00m, salarySlip.TaxfreeAllowance);
            Assert.AreEqual(13333.33m, salarySlip.TaxableIncome);
            Assert.AreEqual(4841.67m, salarySlip.TaxPayable);
        }
示例#6
0
        public void generate_salary_slip_for_employee_with_less_allowance()
        {
            //Iteration 5: for an annual gross salary of £101,000.00
            var employee = new Employee(id: EmployeeId, name: EmployeeName, annualGrossSalary: 101000);

            var salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(8416.67m, salarySlip.MonthlyGrossSalary);
            Assert.AreEqual(446.07m, salarySlip.NationalInsurance);
            Assert.AreEqual(875.00m, salarySlip.TaxfreeAllowance);
            Assert.AreEqual(7541.67m, salarySlip.TaxableIncome);
            Assert.AreEqual(2483.33m, salarySlip.TaxPayable);
        }
示例#7
0
        public void generate_salary_slip_for_employee_with_higher_ni_and_taxes()
        {
            //Iteration 4: for an annual gross salary of £45,000.00
            var employee = new Employee(id: EmployeeId, name: EmployeeName, annualGrossSalary: 45000);

            var salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(3750.00m, salarySlip.MonthlyGrossSalary);
            Assert.AreEqual(352.73m, salarySlip.NationalInsurance);
            Assert.AreEqual(916.67m, salarySlip.TaxfreeAllowance);
            Assert.AreEqual(2833.33m, salarySlip.TaxableIncome);
            Assert.AreEqual(600.00m, salarySlip.TaxPayable);
        }
示例#8
0
        public void generate_salary_slip_for_employee_with_basic_taxes()
        {
            //Iteration 3: for an annual gross salary of £12,000.00
            var employee = new Employee(id: EmployeeId, name: EmployeeName, annualGrossSalary: 12000);

            var salarySlip = SalarySlipGenerator.GenerateFor(employee);

            Assert.AreEqual(EmployeeId, salarySlip.EmployeeId);
            Assert.AreEqual(EmployeeName, salarySlip.EmployeeName);
            Assert.AreEqual(1000.00m, salarySlip.MonthlyGrossSalary);
            Assert.AreEqual(39.40m, salarySlip.NationalInsurance);
            Assert.AreEqual(916.67m, salarySlip.TaxfreeAllowance);
            Assert.AreEqual(83.33m, salarySlip.TaxableIncome);
            Assert.AreEqual(16.67m, salarySlip.TaxPayable);
        }
示例#9
0
        public void GenerateSalaryForJohnDoeWithAnnualGrosSalaryOf_5000pound()
        {
            Employee johnDoe = new Employee()
            {
                ID   = 12345,
                Name = "John Doe",
                AnnualGrossSalary = 5000.00m
            };
            ISalarySlipGenerator generator = new SalarySlipGenerator();

            SalarySlip salarySlip = generator.GenerateFor(johnDoe);

            Assert.NotNull(salarySlip);
            Assert.AreEqual(12345, salarySlip.EmployeeID);
            Assert.AreEqual("John Doe", salarySlip.EmployeeName);
            Assert.AreEqual(416.67, salarySlip.MonthlyGrossSalary);
        }