private static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("Usage: MonthlyPayslip.ConsoleApp.exe employeeCsvFile taxtableCsvFile payslipsCsvFile"); return; } var employeeCsv = args[0]; var taxtableCsv = args[1]; var payslipsCsv = args[2]; var employeeRepository = new EmployeeRepository(employeeCsv); var taxTableRepository = new TaxTableRepository(taxtableCsv); var payslipRepository = new PayslipRepository(payslipsCsv); var payslipGenerator = new PayslipGenerator(employeeRepository, taxTableRepository); var payslips = payslipGenerator.GetPayslips(); File.Delete(payslipsCsv); foreach (var payslip in payslips) { Console.WriteLine(payslip.ToCsv()); payslipRepository.Add(payslip); } }
public void GeneratePayslip_creates_valid_payslip() { // Arrange var payCalculator = new PayCalculator(); var taxTable = new TaxTable(); // Act var payslipGenerator = new PayslipGenerator(payCalculator, taxTable); var payslip = payslipGenerator.GeneratePayslip(_employee) .Split(',') .Select(x => x.Trim()) .ToArray(); // Name Assert.AreEqual(payslip[0], "John Smith"); // Pay period Assert.AreEqual(payslip[1].Trim(), "01 March - 31 March"); // Gross income Assert.AreEqual(payslip[2], "10000"); // Income tax Assert.AreEqual(payslip[3], "2696"); // Net income Assert.AreEqual(payslip[4], "7304"); // Super Assert.AreEqual(payslip[5], "900"); }
public void ReturnTheCorrectGrossIncomeRoundingDown() { var payslipGenerator = new PayslipGenerator(new Calculator()); var payslip = new Person( "abby", "thompson", 60050, 9, new DateTime(1, 1, 1), new DateTime(1, 1, 30) ); var expected = new Person( "abby", "thompson", 60050, 9, new DateTime(1, 1, 1), new DateTime(1, 1, 30) ) { GrossIncome = 5004, IncomeTax = 922, NetIncome = 4082, SuperTotal = 450 }; var actual = payslipGenerator.GeneratePayslip(payslip); Assert.Equal(expected.GrossIncome, actual.GrossIncome); Assert.Equal(expected.IncomeTax, actual.IncomeTax); Assert.Equal(expected.NetIncome, actual.NetIncome); Assert.Equal(expected.SuperTotal, actual.SuperTotal); }
public void GeneratePayslip_should_make_correct_calls_to_service_methods() { // Arrange var payCalculator = new Mock <IPayCalculator>(); payCalculator.Setup(x => x.CalculateIncomeTax(It.IsAny <decimal>(), It.IsAny <ITaxTable>())).Verifiable(); payCalculator.Setup(x => x.CalculateGrossIncome(It.IsAny <decimal>())).Verifiable(); payCalculator.Setup(x => x.CalculateNetIncome(It.IsAny <decimal>(), It.IsAny <decimal>())).Verifiable(); payCalculator.Setup(x => x.CalculateSuper(It.IsAny <decimal>(), It.IsAny <decimal>())).Verifiable(); var taxTable = new Mock <ITaxTable>(); taxTable.Setup(x => x.GetTaxBracket(It.IsAny <decimal>())).Returns(new TaxBracket(0, 18000, 0, 0)); var payslipGenerator = new PayslipGenerator(payCalculator.Object, taxTable.Object); // Act payslipGenerator.GeneratePayslip(_employee); // Assert payCalculator.Verify( x => x.CalculateGrossIncome(It.IsAny <decimal>()), Times.Once() ); payCalculator.Verify( x => x.CalculateNetIncome(It.IsAny <decimal>(), It.IsAny <decimal>()), Times.Once() ); payCalculator.Verify( x => x.CalculateSuper(It.IsAny <decimal>(), It.IsAny <decimal>()), Times.Once() ); }
public Fixture() { this.Generator = new PayslipGenerator(); // configure logging Log.Logger = new LoggerConfiguration() .WriteTo.File("logs-test.txt") .WriteTo.Console() .CreateLogger(); }
public void GivenBaseSalary_GenerateCorrectPayslip(string inputCsvLine, string expectedCsv) { var payslipCalculator = new PayslipGenerator(); var payslipCsvLineParser = new PayslipCsvLineParser(); var payslipCsvLineComposer = new PayslipCsvLineComposer(); var payslipInfo = payslipCsvLineParser.Parse(inputCsvLine); var payslipDetails = payslipCalculator.CalculateUsing(payslipInfo); var payslipAsCsv = payslipCsvLineComposer.Compose(payslipDetails); Assert.That(payslipAsCsv, Is.EqualTo(expectedCsv)); }
public void Setup() { _employees = new List <Employee>() { new Employee() { FirstName = "David", LastName = "Rudd", AnnualSalary = 60000, SuperRate = 0.09, PaymentStartDate = "01 March – 31 March" }, new Employee() { FirstName = "Ryan", LastName = "Chen", AnnualSalary = 120000, SuperRate = 0.10, PaymentStartDate = "01 April – 30 April" } }; var taxBrackets = new List <TaxBracket>() { new TaxBracket() { MaximumIncome = 18200, Tax = 0, FixedTax = 0 }, new TaxBracket() { MaximumIncome = 37000, Tax = 0.19, FixedTax = 0 }, new TaxBracket() { MaximumIncome = 80000, Tax = 0.325, FixedTax = 3572 }, new TaxBracket() { MaximumIncome = -1, Tax = 0.37, FixedTax = 17547 } }; _employeeRepository = Substitute.For <IRepository <Employee> >(); _employeeRepository.FindAll().ReturnsForAnyArgs(_employees); _taxTableRepository = Substitute.For <IRepository <TaxBracket> >(); _taxTableRepository.FindAll().ReturnsForAnyArgs(taxBrackets); _payslipGenerator = new PayslipGenerator(_employeeRepository, _taxTableRepository); }
private static ConsolePayslipFormatter CreateSampleConsolePayslipFormatter() { const string firstName = "John"; const string lastName = "Doe"; const float salary = 60050; const float superRate = 9; var startDate = new DateTime(2020, 3, 1); var endDate = new DateTime(2020, 3, 31); var employee = new Employee(firstName, lastName, salary, superRate); var payslipGenerator = new PayslipGenerator(employee, startDate, endDate); var payslip = payslipGenerator.Generate(); var consolePayslipFormatter = new ConsolePayslipFormatter(payslip); return(consolePayslipFormatter); }
static void Main(string[] args) { PayslipGenerator payslipGenerator = new PayslipGenerator(); payslipGenerator.start(); }
public PayslipGeneratorShould() { _payslipGenerator = new PayslipGenerator(new TaxRates2017To2018()); }
static Program() { CsvParser = new Parser(); PayslipPaySlipGenerator = new PayslipGenerator(); PayslipCsvConverter = new PayslipCsvConverter(); }
public void SetUp() { _csvParser = new Parser(); _payslipGenerator = new PayslipGenerator(); }