private void ProcessEmployeePayslip(CsvInputFile inputFile) { // Loop through each line of the CSV File var lines = inputFile.GetListOfObjectInFileAsStrings(); foreach (var line in lines) { // Try create an EmployeeInformationEntity var parts = line.Split(inputFile.PartSeparator, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 5) { _invalidObjects.Add(new InvalidEmployeeInformationEntity(line, "Missing fields!")); } else { try { _processedList.Add(new EmployeeInformationEntity(parts[0], parts[1], parts[2], parts[3], parts[4])); } catch (InvalidPayslipException ex) { _invalidObjects.Add(new InvalidEmployeeInformationEntity(line, ex.Message)); } } } }
public void PayslipProgram_WhenUsingGivenInputs() { const string contents = "David,Rudd,60050,9%,01 March – 31 March\nRyan,Chen,120000,10%,01 March – 31 March"; var csv = new CsvInputFile(contents, new[] { '\n' }, new[] { ',' }); var payslipGenerator = new EmployeePayslipGenerator(csv); var expectedReturnTuple = ( new List <BaseValidPayslip> { new PayslipEntity("David", "Rudd", new PayPeriod("01 March – 31 March"), 5004, 922, 4082, 450), new PayslipEntity("Ryan", "Chen", new PayPeriod("01 March – 31 March"), 10000, 2696, 7304, 1000) }, new List <BaseInvalidPayslip>() ); var payslips = payslipGenerator.ProcessPayslips(); CollectionAssert.AreEqual(expectedReturnTuple.Item1, payslips.validPayslips); CollectionAssert.AreEqual(expectedReturnTuple.Item2, payslips.invalidPayslips); }
public void PayslipProgram_WhenUsingErrorProneInputs() { const string contents = "David,Rudd,60050,-9%,01 March – 31 March\n120000,10%,01 March – 31 March"; var csv = new CsvInputFile(contents, new[] { '\n' }, new[] { ',' }); var payslipGenerator = new EmployeePayslipGenerator(csv); var expectedReturnTuple = ( new List <BaseValidPayslip>(), new List <BaseInvalidPayslip> { new InvalidEmployeeInformationEntity("David,Rudd,60050,-9%,01 March – 31 March", "AnnualSalary must be between 0 - 100%!"), new InvalidEmployeeInformationEntity("120000,10%,01 March – 31 March", "Missing fields!") } ); var payslips = payslipGenerator.ProcessPayslips(); CollectionAssert.AreEqual(expectedReturnTuple.Item1, payslips.validPayslips); CollectionAssert.AreEqual(expectedReturnTuple.Item2, payslips.invalidPayslips); }