private void ValidateFunctionalSkillEarningsSplitAndType(FunctionalSkillEarningsEvent act1FsEarning, Type expectedRedundancyType) { var redundancyDate = new DateTime(1920, 7, 1); var redundancyPeriod = redundancyDate.GetPeriodFromDate(); act1FsEarning.Earnings.ToList().ForEach(fse => fse.Periods.Should().HaveCount(12)); var events = service.SplitFunctionSkillEarningByRedundancyDate(act1FsEarning, redundancyDate); events.Should().HaveCount(2); var originalEvent = events[0]; originalEvent.Should().BeOfType(act1FsEarning.GetType()); var expectedOriginalCount = redundancyPeriod - 1; originalEvent.Earnings.ToList().ForEach(ope => { ope.Periods.Should().HaveCount(expectedOriginalCount); Assert.IsTrue(ope.Periods.ToList().All(p => p.Period < redundancyPeriod)); }); var redundancyEvent = events[1]; var expectedRedundancyPeriod = 12 - redundancyPeriod + 1; redundancyEvent.Should().BeOfType(expectedRedundancyType); redundancyEvent.Earnings.ToList().ForEach(ope => { ope.Periods.Should().HaveCount(expectedRedundancyPeriod); Assert.IsTrue(ope.Periods.ToList().All(p => p.Period >= redundancyPeriod)); Assert.IsTrue(ope.Periods.ToList().All(p => p.SfaContributionPercentage == 1m)); }); }