public void RestartAfterPlannedBreakFunctionalSkillsEarningsShouldHaveValidStartDates()
        {
            var builder = new FunctionalSkillEarningEventBuilder(mapper, redundancyEarningService.Object);
            var events  = builder.Build(FileHelpers.CreateFromFile(filename, learnerRefNo));

            var functionalSkillEvent_5010987X = events.First(e => e.LearningAim.Reference.Equals("5010987X"));

            functionalSkillEvent_5010987X.LearningAim.StartDate.Should().Be(DateTime.Parse("2019-08-06T00:00:00+00:00"));
            functionalSkillEvent_5010987X.StartDate.Should().Be(DateTime.Parse("2019-08-06T00:00:00+00:00"));

            var functionalSkillEvent_50093186 = events.First(e => e.LearningAim.Reference.Equals("50093186"));

            functionalSkillEvent_50093186.LearningAim.StartDate.Should().Be(DateTime.Parse("2019-08-06T00:00:00+00:00"));
            functionalSkillEvent_50093186.StartDate.Should().Be(DateTime.Parse("2019-08-06T00:00:00+00:00"));
        }
        public void RestartAfterPlannedBreakFunctionalSkillsEarningsShouldHaveValidFundingLineTypes()
        {
            var builder = new FunctionalSkillEarningEventBuilder(mapper, redundancyEarningService.Object);
            var events  = builder.Build(FileHelpers.CreateFromFile(filename, learnerRefNo));

            var functionalSkillEvent_5010987X = events.FirstOrDefault(e => e.LearningAim.Reference.Equals("5010987X"));

            functionalSkillEvent_5010987X.Should().NotBeNull();
            functionalSkillEvent_5010987X.LearningAim.FundingLineType.Should().Be("19+ Apprenticeship Non-Levy Contract (procured)");

            var functionalSkillEvent_50093186 = events.FirstOrDefault(e => e.LearningAim.Reference.Equals("50093186"));

            functionalSkillEvent_50093186.Should().NotBeNull();
            functionalSkillEvent_50093186.LearningAim.FundingLineType.Should().Be("19+ Apprenticeship Non-Levy Contract (procured)");
        }
Exemplo n.º 3
0
        public void IncludesLearningSupport()
        {
            // arrange
            var processLearnerCommand = new ProcessLearnerCommandBuilder().WithExtendedLearningSupport().Build();

            var builder = new FunctionalSkillEarningEventBuilder(mapper, redundancyEarningService.Object);

            // act
            var events = builder.Build(processLearnerCommand);

            // assert
            events.Should().NotBeNull();
            events.Should().HaveCount(1);
            events.Single().Earnings.Should().HaveCount(3);
            events.Single().Earnings.Single(x => x.Type == FunctionalSkillType.LearningSupport).Periods.Should().HaveCount(12);
        }
        public void RestartAfterPlannedBreakShouldHaveTwoFunctionalSkills()
        {
            var builder = new FunctionalSkillEarningEventBuilder(mapper, redundancyEarningService.Object);
            var events  = builder.Build(FileHelpers.CreateFromFile(filename, learnerRefNo));

            events.Should().HaveCount(2);
            events.First(e => e.LearningAim.Reference.Equals("5010987X")).Earnings
            .Single(x => x.Type == FunctionalSkillType.OnProgrammeMathsAndEnglish).Periods.Should().HaveCount(12);
            var maths = events.First(e => e.LearningAim.Reference.Equals("5010987X")).Earnings.Single(x => x.Type == FunctionalSkillType.OnProgrammeMathsAndEnglish);

            maths.Periods.Single(p => p.Period == 1).Amount.Should().Be(39.25m);
            maths.Periods.Single(p => p.Period == 2).Amount.Should().Be(39.25m);
            maths.Periods.Single(p => p.Period == 3).Amount.Should().Be(0);
            maths.Periods.Single(p => p.Period == 4).Amount.Should().Be(0);
            maths.Periods.Single(p => p.Period == 5).Amount.Should().Be(17.898m);
            maths.Periods.Single(p => p.Period == 6).Amount.Should().Be(17.898m);
        }
Exemplo n.º 5
0
        public void MixedContractTypeBuild()
        {
            // arrange
            var builder = new FunctionalSkillEarningEventBuilder(mapper, redundancyEarningService.Object);

            // act
            var events = builder.Build(learnerSubmission);

            // assert
            events.Should().NotBeNull();
            events.Should().HaveCount(2);

            var nonLevyContractTypeEarning = events.Single(x => x.ContractType == ContractType.Act2);

            nonLevyContractTypeEarning.Should().BeOfType <Act2FunctionalSkillEarningsEvent>();
            nonLevyContractTypeEarning.Should().NotBeNull();
            nonLevyContractTypeEarning.Earnings.Count.Should().Be(3);

            var act2Periods = nonLevyContractTypeEarning.Earnings.First(x => x.Type == FunctionalSkillType.OnProgrammeMathsAndEnglish).Periods
                              .OrderBy(p => p.Period).ToList();

            act2Periods.Count.Should().Be(12);
            act2Periods.Take(4).Where(x => x.Amount != 0).Should().HaveCount(4);
            act2Periods.Skip(4).Where(x => x.Amount == 0).Should().HaveCount(8);

            var levyContractTypeEarning = events.Single(x => x.ContractType == ContractType.Act1);

            levyContractTypeEarning.Should().BeOfType <Act1FunctionalSkillEarningsEvent>();
            levyContractTypeEarning.Should().NotBeNull();
            levyContractTypeEarning.Earnings.Count.Should().Be(3);

            var act1Periods = levyContractTypeEarning.Earnings.First(x => x.Type == FunctionalSkillType.OnProgrammeMathsAndEnglish).Periods
                              .OrderBy(p => p.Period).ToList();

            act1Periods.Count.Should().Be(12);
            act1Periods.Take(6).Where(x => x.Amount == 0).Should().HaveCount(6);
            act1Periods.Skip(6).Where(x => x.Amount != 0).Should().HaveCount(6);
        }
Exemplo n.º 6
0
        public void MapFundingLineTypeCorrectly()
        {
            // arrange
            var builder = new FunctionalSkillEarningEventBuilder(mapper);

            // act
            var events = builder.Build(learnerSubmission);

            // assert
            events.Should().NotBeNull();
            events.Should().HaveCount(2);

            var nonLevyContractTypeEarning = events.Single(x => x.ContractType == ContractType.Act2);

            nonLevyContractTypeEarning.Should().BeOfType <Act2FunctionalSkillEarningsEvent>();
            nonLevyContractTypeEarning.LearningAim.Should().NotBeNull();
            nonLevyContractTypeEarning.LearningAim.FundingLineType.Should().Be("16-18 Apprenticeship Non-Levy Contract (procured)");

            var levyContractTypeEarning = events.Single(x => x.ContractType == ContractType.Act1);

            levyContractTypeEarning.Should().BeOfType <Act1FunctionalSkillEarningsEvent>();
            levyContractTypeEarning.LearningAim.Should().NotBeNull();
            levyContractTypeEarning.LearningAim.FundingLineType.Should().Be("16-18 Apprenticeship (Employer on App Service)");
        }
Exemplo n.º 7
0
        public void FunctionalSkillBuild()
        {
            // arrange
            var builder = new FunctionalSkillEarningEventBuilder(mapper);
            var learnerSubmissionModel = new ProcessLearnerCommand
            {
                CollectionPeriod = 1,
                CollectionYear   = 1920,
                Learner          = new FM36Learner
                {
                    LearningDeliveries = new EditableList <LearningDelivery>
                    {
                        new LearningDelivery
                        {
                            AimSeqNumber           = 1,
                            LearningDeliveryValues = new LearningDeliveryValues
                            {
                                LearnAimRef = "ZPROG001"
                            },
                            LearningDeliveryPeriodisedValues = new EditableList <LearningDeliveryPeriodisedValues>
                            {
                                new LearningDeliveryPeriodisedValues
                                {
                                    AttributeName = "MathEngBalPayment",
                                    Period1       = 0.0m,
                                    Period2       = 0.0m,
                                    Period3       = 0.0m,
                                    Period4       = 0.0m,
                                    Period5       = 0.0m,
                                    Period6       = 0.0m,
                                    Period7       = 0.0m,
                                    Period8       = 0.0m,
                                    Period9       = 0.0m,
                                    Period10      = 0.0m,
                                    Period11      = 0.0m,
                                    Period12      = 0.0m
                                }
                            },
                            LearningDeliveryPeriodisedTextValues = new EditableList <LearningDeliveryPeriodisedTextValues>
                            {
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "LearnDelContType",
                                    Period1       = "Levy Contract",
                                    Period2       = "Levy Contract",
                                    Period3       = "Levy Contract",
                                    Period4       = "Levy Contract",
                                    Period5       = "Levy Contract",
                                    Period6       = "Levy Contract",
                                    Period7       = "Levy Contract",
                                    Period8       = "Levy Contract",
                                    Period9       = "Levy Contract",
                                    Period10      = "Levy Contract",
                                    Period11      = "Levy Contract",
                                    Period12      = "Levy Contract"
                                },
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "FundLineType",
                                    Period1       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period2       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period3       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period4       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period5       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period6       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period7       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period8       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period9       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period10      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period11      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period12      = "16-18 Apprenticeship (Employer on App Service)"
                                }
                            }
                        },
                        new LearningDelivery
                        {
                            AimSeqNumber           = 2,
                            LearningDeliveryValues = new LearningDeliveryValues
                            {
                                LearnAimRef = "M&E"
                            },
                            LearningDeliveryPeriodisedValues = new EditableList <LearningDeliveryPeriodisedValues>
                            {
                                new LearningDeliveryPeriodisedValues
                                {
                                    AttributeName = "MathEngBalPayment",
                                    Period1       = 1,
                                    Period2       = 2,
                                    Period3       = 3,
                                    Period4       = 4,
                                    Period5       = 5,
                                    Period6       = 6,
                                    Period7       = 7,
                                    Period8       = 8,
                                    Period9       = 9,
                                    Period10      = 10,
                                    Period11      = 11,
                                    Period12      = 12
                                }
                            },
                            LearningDeliveryPeriodisedTextValues = new EditableList <LearningDeliveryPeriodisedTextValues>
                            {
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "LearnDelContType",
                                    Period1       = "Levy Contract",
                                    Period2       = "Levy Contract",
                                    Period3       = "Levy Contract",
                                    Period4       = "Levy Contract",
                                    Period5       = "Levy Contract",
                                    Period6       = "Levy Contract",
                                    Period7       = "Levy Contract",
                                    Period8       = "Levy Contract",
                                    Period9       = "Levy Contract",
                                    Period10      = "Levy Contract",
                                    Period11      = "Levy Contract",
                                    Period12      = "Levy Contract"
                                },
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "FundLineType",
                                    Period1       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period2       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period3       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period4       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period5       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period6       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period7       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period8       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period9       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period10      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period11      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period12      = "16-18 Apprenticeship (Employer on App Service)"
                                }
                            }
                        }
                    },
                    PriceEpisodes = new EditableList <PriceEpisode>
                    {
                        new PriceEpisode
                        {
                            PriceEpisodeValues = new PriceEpisodeValues
                            {
                                EpisodeStartDate         = DateTime.Today,
                                PriceEpisodeAimSeqNumber = 1,
                                PriceEpisodeContractType = "Levy Contract",
                            },
                            PriceEpisodePeriodisedValues = new EditableList <PriceEpisodePeriodisedValues>
                            {
                                new PriceEpisodePeriodisedValues
                                {
                                    AttributeName = "PriceEpisodeOnProgPayment",
                                    Period1       = 10,
                                    Period2       = 20
                                }
                            }
                        }
                    }
                }
            };

            // act
            var events = builder.Build(learnerSubmissionModel);

            // assert
            events.Should().NotBeNull();
            events.Should().HaveCount(1);
            events[0].ContractType.Should().Be(ContractType.Act1);
            events[0].Earnings[0].Periods.Should().HaveCount(12);
        }
Exemplo n.º 8
0
        public void MultipleLearningDeliveriesMapCorrectContractType()
        {
            // arrange
            var learnerSubmission2 = new ProcessLearnerCommand
            {
                CollectionPeriod = 1,
                CollectionYear   = 1920,
                Learner          = new FM36Learner
                {
                    LearningDeliveries = new EditableList <LearningDelivery>
                    {
                        new LearningDelivery
                        {
                            AimSeqNumber           = 1,
                            LearningDeliveryValues = new LearningDeliveryValues {
                                LearnAimRef = "English"
                            },
                            LearningDeliveryPeriodisedValues = new EditableList <LearningDeliveryPeriodisedValues>
                            {
                                new LearningDeliveryPeriodisedValues
                                {
                                    AttributeName = "MathEngBalPayment",
                                    Period1       = 1,
                                    Period2       = 2,
                                    Period3       = 3,
                                    Period4       = 4,
                                    Period5       = 5,
                                    Period6       = 6,
                                    Period7       = 7,
                                    Period8       = 8,
                                    Period9       = 9,
                                    Period10      = 10,
                                    Period11      = 11,
                                    Period12      = 12
                                }
                            },
                            LearningDeliveryPeriodisedTextValues = new EditableList <LearningDeliveryPeriodisedTextValues>
                            {
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "LearnDelContType",
                                    Period1       = "Levy Contract",
                                    Period2       = "Levy Contract",
                                    Period3       = "Levy Contract",
                                    Period4       = "Levy Contract",
                                    Period5       = "Levy Contract",
                                    Period6       = "Levy Contract",
                                    Period7       = "Levy Contract",
                                    Period8       = "Levy Contract",
                                    Period9       = "Levy Contract",
                                    Period10      = "Levy Contract",
                                    Period11      = "Levy Contract",
                                    Period12      = "Levy Contract"
                                },
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "FundLineType",
                                    Period1       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period2       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period3       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period4       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period5       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period6       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period7       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period8       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period9       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period10      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period11      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period12      = "16-18 Apprenticeship (Employer on App Service)"
                                }
                            }
                        },
                        new LearningDelivery
                        {
                            AimSeqNumber           = 2,
                            LearningDeliveryValues = new LearningDeliveryValues {
                                LearnAimRef = "Maths"
                            },
                            LearningDeliveryPeriodisedValues = new EditableList <LearningDeliveryPeriodisedValues>
                            {
                                new LearningDeliveryPeriodisedValues
                                {
                                    AttributeName = "MathEngBalPayment",
                                    Period1       = 1,
                                    Period2       = 2,
                                    Period3       = 3,
                                    Period4       = 4,
                                    Period5       = 5,
                                    Period6       = 6,
                                    Period7       = 7,
                                    Period8       = 8,
                                    Period9       = 9,
                                    Period10      = 10,
                                    Period11      = 11,
                                    Period12      = 12
                                }
                            },
                            LearningDeliveryPeriodisedTextValues = new EditableList <LearningDeliveryPeriodisedTextValues>
                            {
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "LearnDelContType",
                                    Period1       = "Non-Levy Contract",
                                    Period2       = "Non-Levy Contract",
                                    Period3       = "Non-Levy Contract",
                                    Period4       = "Non-Levy Contract",
                                    Period5       = "Non-Levy Contract",
                                    Period6       = "Non-Levy Contract",
                                    Period7       = "Non-Levy Contract",
                                    Period8       = "Non-Levy Contract",
                                    Period9       = "Non-Levy Contract",
                                    Period10      = "Non-Levy Contract",
                                    Period11      = "Non-Levy Contract",
                                    Period12      = "Non-Levy Contract"
                                },
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "FundLineType",
                                    Period1       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period2       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period3       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period4       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period5       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period6       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period7       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period8       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period9       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period10      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period11      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period12      = "16-18 Apprenticeship (Employer on App Service)"
                                }
                            }
                        },
                    },
                    PriceEpisodes = new EditableList <PriceEpisode> {
                    }
                }
            };

            var sut = new FunctionalSkillEarningEventBuilder(mapper);

            // act
            var events = sut.Build(learnerSubmission2);

            // assert
            events.Should().NotBeNull();
            events.Should().HaveCount(2);
            events[0].Should().BeAssignableTo <Act1FunctionalSkillEarningsEvent>();
            events[0].ContractType.Should().Be(ContractType.Act1);
            events[1].Should().BeAssignableTo <Act2FunctionalSkillEarningsEvent>();
            events[1].ContractType.Should().Be(ContractType.Act2);
        }
Exemplo n.º 9
0
        public void TestBuild()
        {
            // arrange
            var expectedResult = new Act1FunctionalSkillEarningsEvent
            {
                Earnings = new List <FunctionalSkillEarning>().AsReadOnly()
            };
            var builder = new FunctionalSkillEarningEventBuilder(mapper, redundancyEarningService.Object);
            var learnerSubmissionModel = new ProcessLearnerCommand
            {
                CollectionPeriod = 1,
                CollectionYear   = 1920,
                Learner          = new FM36Learner
                {
                    LearningDeliveries = new EditableList <LearningDelivery>
                    {
                        new LearningDelivery {
                            AimSeqNumber = 1, LearningDeliveryValues = new LearningDeliveryValues {
                                LearnAimRef = "ZPROG001"
                            }
                        },
                        new LearningDelivery
                        {
                            AimSeqNumber           = 2,
                            LearningDeliveryValues = new LearningDeliveryValues
                            {
                                LearnAimRef = "M&E",
                                LearnDelInitialFundLineType = "Non-Levy Contract"
                            },
                            LearningDeliveryPeriodisedValues = new EditableList <LearningDeliveryPeriodisedValues>
                            {
                                new LearningDeliveryPeriodisedValues
                                {
                                    AttributeName = "MathEngBalPayment",
                                    Period1       = 1,
                                    Period2       = 2
                                }
                            },
                            LearningDeliveryPeriodisedTextValues = new EditableList <LearningDeliveryPeriodisedTextValues>
                            {
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "LearnDelContType",
                                    Period1       = "Levy Contract",
                                    Period2       = "Levy Contract",
                                    Period3       = "Levy Contract",
                                    Period4       = "Levy Contract",
                                    Period5       = "Levy Contract",
                                    Period6       = "Levy Contract",
                                    Period7       = "Levy Contract",
                                    Period8       = "Levy Contract",
                                    Period9       = "Levy Contract",
                                    Period10      = "Levy Contract",
                                    Period11      = "Levy Contract",
                                    Period12      = "Levy Contract"
                                },
                                new LearningDeliveryPeriodisedTextValues
                                {
                                    AttributeName = "FundLineType",
                                    Period1       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period2       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period3       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period4       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period5       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period6       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period7       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period8       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period9       = "16-18 Apprenticeship (Employer on App Service)",
                                    Period10      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period11      = "16-18 Apprenticeship (Employer on App Service)",
                                    Period12      = "16-18 Apprenticeship (Employer on App Service)"
                                }
                            }
                        }
                    },
                    PriceEpisodes = new EditableList <PriceEpisode>
                    {
                        new PriceEpisode
                        {
                            PriceEpisodeValues = new PriceEpisodeValues
                            {
                                EpisodeStartDate         = DateTime.Today,
                                PriceEpisodeAimSeqNumber = 1,
                                PriceEpisodeContractType = "Levy Contract",
                            },
                            PriceEpisodePeriodisedValues = new EditableList <PriceEpisodePeriodisedValues>
                            {
                                new PriceEpisodePeriodisedValues
                                {
                                    AttributeName = "PriceEpisodeOnProgPayment",
                                    Period1       = 10,
                                    Period2       = 20
                                }
                            }
                        }
                    }
                }
            };

            // act
            var events = builder.Build(learnerSubmissionModel);

            // assert
            events.Should().NotBeNull();
            events.Should().HaveCount(1);
        }