public void LearnerEmploymentStatusesForDate_Multiple()
        {
            var learnStartDate = new DateTime(2018, 8, 13);

            var matchingLearnerEmploymentStatusOne = new TestLearnerEmploymentStatus
            {
                DateEmpStatApp = new DateTime(2018, 8, 13)
            };

            var matchingLearnerEmploymentStatusTwo = new TestLearnerEmploymentStatus
            {
                DateEmpStatApp = new DateTime(2018, 8, 13)
            };

            var learnerEmploymentStatuses = new List <TestLearnerEmploymentStatus>
            {
                matchingLearnerEmploymentStatusOne,
                matchingLearnerEmploymentStatusTwo
            };

            NewService().LearnerEmploymentStatusesForDate(learnerEmploymentStatuses, learnStartDate).Should().BeEquivalentTo(new List <ILearnerEmploymentStatus> {
                matchingLearnerEmploymentStatusOne, matchingLearnerEmploymentStatusTwo
            });
        }
        public void IsAdultSkillsFundedOnBenefits_True_LDM()
        {
            var learningDelivery = new TestLearningDelivery()
            {
                FundModel            = 35,
                LearnStartDate       = new DateTime(2017, 1, 2),
                LearningDeliveryFAMs = new List <ILearningDeliveryFAM>()
                {
                    new TestLearningDeliveryFAM()
                    {
                        LearnDelFAMCode = "318",
                        LearnDelFAMType = "LDM"
                    },
                    new TestLearningDeliveryFAM()
                    {
                        LearnDelFAMCode = "999",
                        LearnDelFAMType = "LDM"
                    }
                }
            };

            var latestLearnerEmploymentStatus = new TestLearnerEmploymentStatus()
            {
                DateEmpStatApp = new DateTime(2017, 1, 2),
                EmploymentStatusMonitorings = new List <IEmploymentStatusMonitoring>()
                {
                    new TestEmploymentStatusMonitoring()
                    {
                        ESMCode = 4,
                        ESMType = "BSI"
                    }
                }
            };
            var learnerEmploymentStatuses = new List <ILearnerEmploymentStatus>()
            {
                latestLearnerEmploymentStatus,
                new TestLearnerEmploymentStatus()
                {
                    DateEmpStatApp = new DateTime(2017, 1, 1),
                    EmploymentStatusMonitorings = new List <IEmploymentStatusMonitoring>()
                    {
                        new TestEmploymentStatusMonitoring()
                        {
                            ESMCode = 23,
                            ESMType = "BSI"
                        }
                    }
                }
            };

            var learnerEmploymentStatusMonitoringQueryServiceMock = new Mock <ILearnerEmploymentStatusMonitoringQueryService>();

            learnerEmploymentStatusMonitoringQueryServiceMock.Setup(x =>
                                                                    x.HasAnyEmploymentStatusMonitoringTypeAndCodesForEmploymentStatus(
                                                                        It.IsAny <ILearnerEmploymentStatus>(),
                                                                        "BSI",
                                                                        It.IsAny <IEnumerable <int> >())).Returns(false);

            learnerEmploymentStatusMonitoringQueryServiceMock.Setup(x =>
                                                                    x.HasAnyEmploymentStatusMonitoringTypeAndCodeForEmploymentStatus(
                                                                        It.IsAny <ILearnerEmploymentStatus>(),
                                                                        "BSI",
                                                                        4)).Returns(true);

            var learningDeliveryFamQueryServiceMock = new Mock <ILearningDeliveryFAMQueryService>();

            learningDeliveryFamQueryServiceMock.Setup(x =>
                                                      x.HasLearningDeliveryFAMCodeForType(It.IsAny <IEnumerable <ILearningDeliveryFAM> >(), "LDM", "318"))
            .Returns(true);

            NewRule(learnerEmploymentStatusMonitoringQueryServiceMock.Object, learningDeliveryFamQueryServiceMock.Object)
            .IsAdultSkillsFundedOnBenefits(learnerEmploymentStatuses, learningDelivery).Should().BeTrue();

            learnerEmploymentStatusMonitoringQueryServiceMock.Verify(
                x => x.HasAnyEmploymentStatusMonitoringTypeAndCodeForEmploymentStatus(
                    latestLearnerEmploymentStatus,
                    "BSI",
                    4),
                Times.Once);

            learningDeliveryFamQueryServiceMock.Verify(
                x =>
                x.HasLearningDeliveryFAMCodeForType(learningDelivery.LearningDeliveryFAMs, "LDM", "318"),
                Times.Once);
        }