public void GeneratePayslipForEmployee_TestData2_ReturnExpectedData() { //Arrange var mockTaxCalculator = new Mock <ITaxCalculatorService>(); mockTaxCalculator.Setup(tc => tc.CalculateIncomeTax(It.IsAny <int>(), Enums.CalculationFrequency.Monthly)).Returns(2696); IPayslipService _payslipService = new PayslipService(mockTaxCalculator.Object); var data = new EmployeeInformation() { EmployeeFirstName = "Ryan", EmployeeLastName = "Chen", AnnualSalary = 120000, PayslipFrequency = Enums.CalculationFrequency.Monthly, SuperRate = 10, PayPeriod = "01 Mar-31 Mar" }; var expectedResult = new PayslipInfo() { Name = "Ryan Chen", GrossIncome = 10000, IncomeTax = 2696, Super = 1000, PayPeriod = "01 Mar-31 Mar" }; //Act var payslip = _payslipService.GeneratePayslipForEmployee(data); //Assert Assert.AreEqual(expectedResult.NetIncome, payslip.NetIncome); Assert.AreEqual(expectedResult.ToString(), payslip.ToString()); }
public void Init() { _loggerMock = new Mock <ILogger <PayslipService> >(); //_loggerMock.Setup(x => x.LogTrace(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<object[]>())).Verifiable(); //_loggerMock.Setup(x => x.LogError(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<object[]>())).Verifiable(); _payslipService = new PayslipService(null, _loggerMock.Object); }
public void PayslipService_MissingTaxBraketForIncome_ThrowsException() { var payslipRequest = GetMockRequestData(); var taxSettings = new TaxSettings() { TaxRates = new List <TaxRates>() { new TaxRates() { ApplyFrom = null, ApplyTo = new DateTime(2015, 9, 30), TaxBrackets = new List <TaxBracket>() { new TaxBracket() { Base = 0, FromIncome = 0, ToIncome = 110000, TaxPerDollar = 0.10m }, new TaxBracket() { Base = 11000, FromIncome = 125000, ToIncome = null, TaxPerDollar = 0.20m } } }, new TaxRates() { ApplyFrom = new DateTime(2015, 10, 1), ApplyTo = null, TaxBrackets = new List <TaxBracket>() { new TaxBracket() { Base = 0, FromIncome = 0, ToIncome = 110000, TaxPerDollar = 0.10m }, new TaxBracket() { Base = 11000, FromIncome = 110000, ToIncome = null, TaxPerDollar = 0.20m } } }, } }; _payslipService = new PayslipService(taxSettings, _loggerMock.Object); var response = _payslipService.GeneratePayslip(payslipRequest); }
static void Main(string[] args) { Console.WriteLine("Welcome to payslip app. Please enter file name to process"); var inputFileName = Console.ReadLine(); if (File.Exists(inputFileName)) { var service = new PayslipService( new EmployeeDetailRepo(inputFileName), new TaxCalculater()); var payslips = service.GeneratePayslips(); PrintPayslips(payslips); } else { Console.WriteLine("Sorry file does not exist"); } Console.WriteLine(); Console.WriteLine("Please press enter to exit"); Console.ReadLine(); }
public void GeneratePayslipSuccesfully() { var repo = new Mock <IEmployeeDetailRepo>(); repo.Setup(x => x.ReadAllEmployeeDetails()).Returns(new EmployeeDetailModel[] { inputEmployee1, inputEmployee2 }); var taxCalculater = new Mock <ITaxCalculater>(); taxCalculater.Setup(x => x.CalculateIncomeTax(inputEmployee2.AnnualSalary)).Returns(payslip2.IncomeTax * PayslipService.NumberOfMonthInYear); var service = new PayslipService(repo.Object, taxCalculater.Object); var payslips = service.GeneratePayslips(); var payslipsArray = payslips.ToArray(); Assert.IsTrue(payslipsArray.Length == 2 && payslipsArray[1].Name == payslip2.Name && payslipsArray[1].Payperiod == payslip2.Payperiod && payslipsArray[1].GrossIncome == payslip2.GrossIncome && payslipsArray[1].IncomeTax == payslip2.IncomeTax && payslipsArray[1].NetIncome == payslip2.NetIncome && payslipsArray[1].Super == payslip2.Super); }
public void GeneratePayslipForEmployee_TestInvalidData_ReturnsNullForPayslip() { //Arrange var mockTaxCalculator = new Mock <ITaxCalculatorService>(); IPayslipService _payslipService = new PayslipService(mockTaxCalculator.Object); var data = new EmployeeInformation() { EmployeeFirstName = "David", EmployeeLastName = "Rudd", AnnualSalary = 60050, PayslipFrequency = Enums.CalculationFrequency.Monthly, SuperRate = 52, // << Invalid PayPeriod = "01 Jan-31 Jan" }; //Act var payslip = _payslipService.GeneratePayslipForEmployee(data); //Assert Assert.IsNull(payslip); }
public void GenerateCsvTest() { var payslipService = new PayslipService(); Assert.AreEqual(0, payslipService.TaxBrackets[0].MinSalary); //Tests that the correct parameters are being passed to the tax calculation logic.//////// Assert.AreEqual(18200, payslipService.TaxBrackets[0].MaxSalary);// // Assert.AreEqual(0, payslipService.TaxBrackets[0].BaseTax);// // Assert.AreEqual(0, payslipService.TaxBrackets[0].MarginalRate);// // Assert.AreEqual(18201, payslipService.TaxBrackets[1].MinSalary);// // Assert.AreEqual(37000, payslipService.TaxBrackets[1].MaxSalary);// // Assert.AreEqual(0, payslipService.TaxBrackets[1].BaseTax);// // Assert.AreEqual(0.19m, payslipService.TaxBrackets[1].MarginalRate);// // Assert.AreEqual(37001, payslipService.TaxBrackets[2].MinSalary);// // Assert.AreEqual(80000, payslipService.TaxBrackets[2].MaxSalary);// // Assert.AreEqual(3572, payslipService.TaxBrackets[2].BaseTax);// // Assert.AreEqual(0.325m, payslipService.TaxBrackets[2].MarginalRate);// // Assert.AreEqual(80001, payslipService.TaxBrackets[3].MinSalary);// // Assert.AreEqual(180000, payslipService.TaxBrackets[3].MaxSalary);// // Assert.AreEqual(17547, payslipService.TaxBrackets[3].BaseTax);// // Assert.AreEqual(0.37m, payslipService.TaxBrackets[3].MarginalRate);// // Assert.AreEqual(180001, payslipService.TaxBrackets[4].MinSalary);// // Assert.AreEqual(2147483647, payslipService.TaxBrackets[4].MaxSalary);// // Assert.AreEqual(54547, payslipService.TaxBrackets[4].BaseTax);// // Assert.AreEqual(0.45m, payslipService.TaxBrackets[4].MarginalRate);//////////////////////////////////////////////////////////////////////////////////// var feedbackMessage = payslipService.GenerateCsv(); Assert.IsFalse(feedbackMessage.Contains(PayslipService.ErrorPrefix), feedbackMessage); var inputExists = File.Exists(payslipService.InputFileName); var outputExists = File.Exists(payslipService.OutputFileName); Assert.IsTrue(!inputExists ^ outputExists); if (outputExists) { using (var reader = File.OpenText(payslipService.OutputFileName)) { var output = new CsvReader(reader); var payslips = output.GetRecords<Payslip>(); var foundDavidRudd = false; var foundRyanChen = false; foreach (var payslip in payslips) //Tests the logic of the income tax calculation. The logic is exactly the same code for each tax bracket. { if (payslip.Name == "David Rudd") { foundDavidRudd = true; Assert.AreEqual("01 March – 31 March", payslip.PayPeriod); Assert.AreEqual(5004, payslip.GrossIncome); Assert.AreEqual(922, payslip.IncomeTax); Assert.AreEqual(4082, payslip.NetIncome); Assert.AreEqual(450, payslip.Super); } else if (payslip.Name == "Ryan Chen") { foundRyanChen = true; Assert.AreEqual("01 March – 31 March", payslip.PayPeriod); Assert.AreEqual(10000, payslip.GrossIncome); Assert.AreEqual(2696, payslip.IncomeTax); Assert.AreEqual(7304, payslip.NetIncome); Assert.AreEqual(1000, payslip.Super); } Assert.IsTrue ( payslip.GrossIncome < 0 ^ payslip.NetIncome >= 0, "Income tax " + payslip.IncomeTax + " exceeds gross income " + payslip.GrossIncome ); } Assert.AreEqual(true, foundDavidRudd); Assert.AreEqual(true, foundRyanChen); } } }
public EmployeeController() { this._payslip = new PayslipService(FINENCIAL_YEAR); }