public Transition(State <T> stateFrom, State <T> stateTo, AbstractRule <T> rule)
 {
     // TODO: Complete member initialization
     this.From = stateFrom;
     this.To   = stateTo;
     this.Rule = rule;
 }
示例#2
0
        public CheckersRules()
        {
            ChainOfRules = new AppendMoveRule();
            ChainOfRules.AddNext(new RemoveCapturedPieceRule());
            ChainOfRules.AddNext(new ChangePieceTypeRule());
            ChainOfRules.AddNext(new NeedToContinueCaptureRule());
            ChainOfRules.AddNext(new SwitchPlayerRule());
            ChainOfRules.AddNext(new NeedToCaptureRule());
            ChainOfRules.AddNext(new DetectAvailableMovesRule());

            FastForwardMoveRules = new AppendMoveRule();
            FastForwardMoveRules.AddNext(new RemoveCapturedPieceRule());
            FastForwardMoveRules.AddNext(new ChangePieceTypeRule());
            FastForwardMoveRules.AddNext(new NeedToContinueCaptureRule());
            FastForwardMoveRules.AddNext(new SwitchPlayerRule());

            FastForwardUndoMoveRules = new AppendMoveRule();
            FastForwardUndoMoveRules.AddNext(new RemoveCapturedPieceRule());
            FastForwardUndoMoveRules.AddNext(new ChangePieceTypeRule());
            FastForwardUndoMoveRules.AddNext(new NeedToContinueCaptureRule());
            FastForwardUndoMoveRules.AddNext(new SwitchPlayerRule());

            InitialPositionRules = new InitialPositionRule();
            InitialPositionRules.AddNext(new DetectAvailableMovesRule());

            FastForwardAvailableMovesRules = new NeedToCaptureRule();
            FastForwardAvailableMovesRules.AddNext(new DetectAvailableMovesRule());
        }
示例#3
0
 public INew New()
 {
     type     = null;
     property = null;
     rule     = null;
     return(this);
 }
示例#4
0
        [InlineData("ACT", 1)] // Monitoring.Delivery.Types.ApprenticeshipContract
        public void InvalidItemRaisesValidationMessage(string famType, int dateOffset)
        {
            // arrange
            const string learnRefNumber = "123456789X";

            var testDate = DateTime.Parse("2017-12-30");

            var fam = new Mock <ILearningDeliveryFAM>();

            fam
            .SetupGet(x => x.LearnDelFAMType)
            .Returns(famType);
            fam
            .SetupGet(x => x.LearnDelFAMDateToNullable)
            .Returns(testDate.AddDays(dateOffset));

            var fams = new ILearningDeliveryFAM[] { fam.Object };

            var delivery = new Mock <ILearningDelivery>();

            delivery
            .SetupGet(x => x.AchDateNullable)
            .Returns(testDate);
            delivery
            .SetupGet(x => x.FundModel)
            .Returns(36);     // TypeOfFunding.ApprenticeshipsFrom1May2017
            delivery
            .SetupGet(x => x.LearningDeliveryFAMs)
            .Returns(fams);

            var deliveries = new ILearningDelivery[] { delivery.Object };

            var learner = new Mock <ILearner>();

            learner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(learnRefNumber);
            learner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnDelFAMDateTo_05, learnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("AchDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMDateTo", AbstractRule.AsRequiredCultureDate(testDate.AddDays(dateOffset))))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var sut = new LearnDelFAMDateTo_05Rule(handler.Object);

            // act
            sut.Validate(learner.Object);

            // assert
            handler.VerifyAll();
        }
        public void AddTransition(string from, string to, AbstractRule <T> rule)
        {
            State <T> stateFrom = States.FirstOrDefault(s => s.Name == from);

            if (stateFrom != null)
            {
                State <T> stateTo = States.FirstOrDefault(s => s.Name == to);
                if (stateTo != null)
                {
                    var tran = new Transition <T>(stateFrom, stateTo, rule);
                    Transitions.Add(tran);
                    stateFrom.Transitions.Add(tran);
                }
            }
        }
示例#6
0
        public void InvalidItemRaisesValidationMessage(int?candidate)
        {
            const string LearnRefNumber = "123456789X";

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(x => x.AchDateNullable)
            .Returns(DateTime.Today);
            mockDelivery
            .SetupGet(x => x.OutcomeNullable)
            .Returns(candidate);
            mockDelivery
            .SetupGet(x => x.ProgTypeNullable)
            .Returns(24);

            var deliveries = new ILearningDelivery[]
            {
                mockDelivery.Object
            };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.Outcome_04, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("AchDate", AbstractRule.AsRequiredCultureDate(DateTime.Today)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("Outcome", candidate))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var sut = new Outcome_04Rule(handler.Object);

            sut.Validate(mockLearner.Object);

            handler.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage(string empStart, string yearEnd)
        {
            const string LearnRefNumber = "123456789X";

            var empStartDate = DateTime.Parse(empStart);
            var yearEndDate  = DateTime.Parse(yearEnd);

            var mockStatus = new Mock <ILearnerEmploymentStatus>();

            mockStatus
            .SetupGet(y => y.DateEmpStatApp)
            .Returns(empStartDate);

            var statii = new List <ILearnerEmploymentStatus>();

            statii.Add(mockStatus.Object);

            var learner = new Mock <ILearner>();

            learner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            learner
            .SetupGet(x => x.LearnerEmploymentStatuses)
            .Returns(statii);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle("DateEmpStatApp_01", LearnRefNumber, null, Moq.It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("DateEmpStatApp", AbstractRule.AsRequiredCultureDate(empStartDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var yearData = new Mock <IAcademicYearDataService>(MockBehavior.Strict);

            yearData
            .Setup(x => x.End())
            .Returns(yearEndDate);

            var sut = new DateEmpStatApp_01Rule(handler.Object, yearData.Object);

            sut.Validate(learner.Object);

            handler.VerifyAll();
            yearData.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage(string candidate, string testDate)
        {
            var famType = candidate.Substring(0, 3);
            var famCode = candidate.Substring(3);

            var monitor = new Mock <ILearningDeliveryFAM>();

            monitor
            .SetupGet(x => x.LearnDelFAMType)
            .Returns(famType);
            monitor
            .SetupGet(x => x.LearnDelFAMCode)
            .Returns(famCode);

            var fams = new ILearningDeliveryFAM[] { monitor.Object };

            var referenceDate = DateTime.Parse(testDate);

            const string LearnRefNumber = "123456789X";
            const string learnAimRef    = "salddfkjeifdnase";

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnAimRef)
            .Returns(learnAimRef);
            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(referenceDate);
            mockDelivery
            .SetupGet(y => y.LearningDeliveryFAMs)
            .Returns(fams);

            var deliveries = new ILearningDelivery[] { mockDelivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnDelFAMType_06, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(referenceDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMType", famType))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMCode", famCode))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var lookups = new Mock <IProvideLookupDetails>(MockBehavior.Strict);

            lookups
            .Setup(x => x.IsVaguelyCurrent(TypeOfLimitedLifeLookup.LearnDelFAMType, candidate, referenceDate))
            .Returns(false);

            var learningDeliveryFAMQS = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);

            learningDeliveryFAMQS
            .Setup(x => x.HasLearningDeliveryFAMType(
                       mockDelivery.Object.LearningDeliveryFAMs,
                       "RES"))
            .Returns(false);

            var sut = new LearnDelFAMType_06Rule(handler.Object, lookups.Object, learningDeliveryFAMQS.Object);

            sut.Validate(mockLearner.Object);

            handler.VerifyAll();
            lookups.VerifyAll();
        }
示例#9
0
 public IBuild Contains(string value)
 {
     rule = new ContainsRule(property, type, value);
     return(this);
 }
示例#10
0
 public IBuild StartWith(string value)
 {
     rule = new StartWithRule(property, type, value);
     return(this);
 }
示例#11
0
 public IBuild IsNull(object value)
 {
     rule = new IsNullRule(property, type, value);
     return(this);
 }
示例#12
0
 public IBuild IsNotEqualTo(object value)
 {
     rule = new NotEqualsRule(property, type, value);
     return(this);
 }
        public void InvalidItemRaisesValidationMessage(string candidate)
        {
            const string LearnRefNumber = "123456789X";
            var          thresholdDate  = DateTime.Parse("2017-05-01");

            var delivery = new Mock <ILearningDelivery>();

            delivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(thresholdDate);
            delivery
            .SetupGet(y => y.FundModel)
            .Returns(25);
            delivery
            .SetupGet(y => y.ProgTypeNullable)
            .Returns(24);

            var deliveries = new ILearningDelivery[] { delivery.Object };

            var learner = new Mock <ILearner>();

            learner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            learner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.UKPRN_17, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("UKPRN", TestProviderID))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("FundModel", 25))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("ProgType", 24))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(thresholdDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMType", "SOF"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMCode", "105"))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var fileData = new Mock <IFileDataService>(MockBehavior.Strict);

            fileData
            .Setup(x => x.UKPRN())
            .Returns(TestProviderID);

            var allocation = new Mock <IFcsContractAllocation>(MockBehavior.Strict);

            allocation
            .SetupGet(x => x.FundingStreamPeriodCode)
            .Returns(candidate);
            allocation
            .SetupGet(x => x.StopNewStartsFromDate)
            .Returns(thresholdDate);
            allocation
            .SetupGet(x => x.StartDate)
            .Returns(thresholdDate);

            var fcsData = new Mock <IFCSDataService>(MockBehavior.Strict);

            fcsData
            .Setup(x => x.GetContractAllocationsFor(TestProviderID))
            .Returns(new IFcsContractAllocation[] { allocation.Object });

            var learningDeliveryFamqs = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);

            learningDeliveryFamqs
            .Setup(x => x.HasLearningDeliveryFAMCodeForType(
                       delivery.Object.LearningDeliveryFAMs,
                       "SOF",
                       "105"))
            .Returns(true);

            learningDeliveryFamqs
            .Setup(x => x.HasLearningDeliveryFAMType(
                       delivery.Object.LearningDeliveryFAMs,
                       "RES"))
            .Returns(false);

            var sut = new UKPRN_17Rule(handler.Object, fileData.Object, learningDeliveryFamqs.Object, fcsData.Object);

            sut.Validate(learner.Object);

            handler.VerifyAll();
            learningDeliveryFamqs.VerifyAll();
            fileData.VerifyAll();
            fcsData.VerifyAll();
        }
示例#14
0
        [InlineData("2017-04-01", "2016-04-01", "2016-03-31")]                                                        // withdrawn upper limit
        public void InvalidItemRaisesValidationMessage(string candidate, string start, string end)
        {
            // arrange
            const string LearnRefNumber = "123456789X";
            const string learnAimRef    = "shonkyRefCode"; // <= any old code for the purpose of the test...

            var testDate = DateTime.Parse(candidate);
            var delivery = new Mock <ILearningDelivery>();

            delivery
            .SetupGet(x => x.LearnStartDate)
            .Returns(testDate);
            delivery
            .SetupGet(x => x.LearnAimRef)
            .Returns(learnAimRef);

            // these are random and meaningless values
            delivery
            .SetupGet(x => x.ProgTypeNullable)
            .Returns(2);
            delivery
            .SetupGet(x => x.FworkCodeNullable)
            .Returns(3);
            delivery
            .SetupGet(x => x.PwayCodeNullable)
            .Returns(4);

            var deliveries = new ILearningDelivery[] { delivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnStartDate_07, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("PwayCode", 4))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("ProgType", 2))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("FworkCode", 3))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var ddRule04 = new Mock <IDerivedData_04Rule>(MockBehavior.Strict);

            ddRule04
            .Setup(x => x.GetEarliesStartDateFor(delivery.Object, deliveries))
            .Returns(testDate);

            var startDate = DateTime.Parse(start);
            var endDate   = string.IsNullOrWhiteSpace(end)
                ? (DateTime?)null
                : DateTime.Parse(end);

            var frameworkAim = new Mock <ILARSFrameworkAim>();

            frameworkAim
            .SetupGet(x => x.ProgType)
            .Returns(2);
            frameworkAim
            .SetupGet(x => x.FworkCode)
            .Returns(3);
            frameworkAim
            .SetupGet(x => x.PwayCode)
            .Returns(4);
            frameworkAim
            .SetupGet(x => x.StartDate)
            .Returns(startDate);
            frameworkAim
            .SetupGet(x => x.EndDate)
            .Returns(endDate);

            var larsData = new Mock <ILARSDataService>(MockBehavior.Strict);

            larsData
            .Setup(x => x.GetFrameworkAimsFor(learnAimRef))
            .Returns(new ILARSFrameworkAim[] { frameworkAim.Object });

            var commonOps = new Mock <IProvideRuleCommonOperations>(MockBehavior.Strict);

            commonOps
            .Setup(x => x.IsComponentOfAProgram(delivery.Object))
            .Returns(true);
            commonOps
            .Setup(x => x.InApprenticeship(delivery.Object))
            .Returns(true);
            commonOps
            .Setup(x => x.IsRestart(delivery.Object))
            .Returns(false);
            commonOps
            .Setup(x => x.IsStandardApprencticeship(delivery.Object))
            .Returns(false);

            var sut = new LearnStartDate_07Rule(handler.Object, ddRule04.Object, larsData.Object, commonOps.Object);

            // act
            sut.Validate(mockLearner.Object);

            // assert
            handler.VerifyAll();
            ddRule04.VerifyAll();
            larsData.VerifyAll();
            commonOps.VerifyAll();
        }
示例#15
0
        public void InvalidItemRaisesValidationMessage(string candidate, string start, string end)
        {
            const string LearnRefNumber = "123456789X";
            const string learnAimRef    = "shonkyRefCode";

            var testDate = DateTime.Parse(candidate);
            var delivery = new Mock <ILearningDelivery>();

            delivery
            .SetupGet(x => x.LearnStartDate)
            .Returns(testDate);
            delivery
            .SetupGet(x => x.LearnAimRef)
            .Returns(learnAimRef);
            delivery
            .SetupGet(x => x.AimType)
            .Returns(3);
            delivery
            .SetupGet(x => x.ProgTypeNullable)
            .Returns(2);
            delivery
            .SetupGet(x => x.FworkCodeNullable)
            .Returns(3);
            delivery
            .SetupGet(x => x.PwayCodeNullable)
            .Returns(4);

            var deliveries = new ILearningDelivery[] { delivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnStartDate_07, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("PwayCode", 4))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("ProgType", 2))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("FworkCode", 3))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var ddRule04 = new Mock <IDerivedData_04Rule>(MockBehavior.Strict);

            ddRule04
            .Setup(x => x.GetEarliesStartDateFor(delivery.Object, deliveries))
            .Returns(testDate);

            var startDate = DateTime.Parse(start);
            var endDate   = GetNullableDate(end);

            var frameworkAim = new Mock <ILARSFrameworkAim>();

            frameworkAim
            .SetupGet(x => x.ProgType)
            .Returns(2);
            frameworkAim
            .SetupGet(x => x.FworkCode)
            .Returns(3);
            frameworkAim
            .SetupGet(x => x.PwayCode)
            .Returns(4);
            frameworkAim
            .SetupGet(x => x.StartDate)
            .Returns(startDate);
            frameworkAim
            .SetupGet(x => x.EndDate)
            .Returns(endDate);

            var larsDelivery = new Mock <ILARSLearningDelivery>();

            larsDelivery
            .SetupGet(x => x.FrameworkCommonComponent)
            .Returns(LARSConstants.CommonComponents.Unknown);

            var larsData = new Mock <ILARSDataService>(MockBehavior.Strict);

            larsData
            .Setup(x => x.GetFrameworkAimsFor(learnAimRef))
            .Returns(new ILARSFrameworkAim[] { frameworkAim.Object });
            larsData
            .Setup(x => x.GetDeliveryFor(learnAimRef))
            .Returns(larsDelivery.Object);

            var learningDeliveryFAMQS = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);

            learningDeliveryFAMQS
            .Setup(x => x.HasLearningDeliveryFAMType(
                       delivery.Object.LearningDeliveryFAMs,
                       "RES"))
            .Returns(false);

            var dateTimeQueryServiceMock = new Mock <IDateTimeQueryService>();

            dateTimeQueryServiceMock.Setup(x => x.IsDateBetween(testDate, DateTime.MinValue, frameworkAim.Object.EndDate.Value, true)).Returns(false);

            var dd07 = new Mock <IDerivedData_07Rule>(MockBehavior.Strict);

            dd07
            .Setup(dd => dd.IsApprenticeship(delivery.Object.ProgTypeNullable)).Returns(true);

            var sut = NewRule(handler.Object, ddRule04.Object, larsData.Object, learningDeliveryFAMQS.Object, dateTimeQueryServiceMock.Object, dd07.Object);

            sut.Validate(mockLearner.Object);

            handler.VerifyAll();
            ddRule04.VerifyAll();
            larsData.VerifyAll();
            learningDeliveryFAMQS.VerifyAll();
            dd07.VerifyAll();
        }
示例#16
0
 public void AddRule(AbstractRule rule)
 {
     Rules.Add(rule);
 }
        public void InvalidItemRaisesValidationMessage()
        {
            const string LearnRefNumber = "123456789X";

            var testDate = DateTime.Parse("2013-08-01");

            var status = new Mock <ILearnerEmploymentStatus>();

            var employmentStatuses = new ILearnerEmploymentStatus[] { status.Object };

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testDate);
            mockDelivery
            .SetupGet(y => y.FundModel)
            .Returns(25);

            var deliveries = new ILearningDelivery[] { mockDelivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);
            mockLearner
            .SetupGet(y => y.LearnerEmploymentStatuses)
            .Returns(employmentStatuses);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle("EmpStat_07", LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("PlanLearnHours", null))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("PlanEEPHours", null))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var dateTimeQS = new Mock <IDateTimeQueryService>(MockBehavior.Strict);

            dateTimeQS
            .Setup(x => x.IsDateBetween(mockDelivery.Object.LearnStartDate, DateTime.MinValue, DateTime.Parse("2013-07-31"), true))
            .Returns(true);

            var lEmpQS = new Mock <ILearnerEmploymentStatusQueryService>(MockBehavior.Strict);

            lEmpQS
            .Setup(x => x.LearnerEmploymentStatusForDate(employmentStatuses, testDate))
            .Returns((ILearnerEmploymentStatus)null);

            var sut = new EmpStat_07Rule(handler.Object, dateTimeQS.Object, lEmpQS.Object);

            sut.Validate(mockLearner.Object);

            handler.VerifyAll();
            dateTimeQS.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage()
        {
            const string LearnRefNumber = "123456789X";
            const string learnAimRef    = "salddfkjeifdnase";
            const int    progType       = 23;

            var mockFAM = new Mock <ILearningDeliveryFAM>();

            mockFAM
            .SetupGet(x => x.LearnDelFAMType)
            .Returns(Monitoring.Delivery.Types.FullOrCoFunding);
            mockFAM
            .SetupGet(x => x.LearnDelFAMCode)
            .Returns("1");

            var fams = new List <ILearningDeliveryFAM>();

            fams.Add(mockFAM.Object);

            var testDate     = DateTime.Parse("2017-08-01");
            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnAimRef)
            .Returns(learnAimRef);
            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testDate);
            mockDelivery
            .SetupGet(y => y.ProgTypeNullable)
            .Returns(progType);
            mockDelivery
            .SetupGet(y => y.FundModel)
            .Returns(FundModels.AdultSkills);
            mockDelivery
            .SetupGet(y => y.LearningDeliveryFAMs)
            .Returns(fams);

            var deliveries = new List <ILearningDelivery>();

            deliveries.Add(mockDelivery.Object);

            var birthDate   = DateTime.Parse("1993-07-01");
            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.DateOfBirthNullable)
            .Returns(birthDate);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnDelFAMType_66, LearnRefNumber, 0, Moq.It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("FundModel", 35))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMType", "FFI"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMCode", "1"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("DateOfBirth", AbstractRule.AsRequiredCultureDate(birthDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var mockCat = new Mock <ILARSLearningCategory>();

            mockCat
            .SetupGet(x => x.CategoryRef)
            .Returns(LARSConstants.Categories.LegalEntitlementLevel2);

            var larsCats = new List <ILARSLearningCategory>();

            larsCats.Add(mockCat.Object);

            var mockLARSDel = new Mock <ILARSLearningDelivery>();

            mockLARSDel
            .SetupGet(x => x.LearnAimRef)
            .Returns(learnAimRef);
            mockLARSDel
            .SetupGet(x => x.NotionalNVQLevelv2)
            .Returns(LARSConstants.NotionalNVQLevelV2Strings.Level2);
            mockLARSDel
            .SetupGet(x => x.Categories)
            .Returns(larsCats);
            mockLARSDel
            .SetupGet(x => x.EffectiveFrom)
            .Returns(new DateTime(2018, 08, 01));
            mockLARSDel
            .SetupGet(x => x.EffectiveTo)
            .Returns(new DateTime(2022, 08, 01));

            var mockLARSAnnualValues = new Mock <ILARSAnnualValue>();

            mockLARSAnnualValues
            .SetupGet(x => x.LearnAimRef)
            .Returns(learnAimRef);
            mockLARSAnnualValues
            .SetupGet(x => x.BasicSkillsType)
            .Returns(190);
            mockLARSAnnualValues
            .SetupGet(x => x.BasicSkills)
            .Returns(1);

            var larsAnnualValues = new List <ILARSAnnualValue>();

            larsAnnualValues.Add(mockLARSAnnualValues.Object);

            var service = new Mock <ILARSDataService>(MockBehavior.Strict);

            service
            .Setup(x => x.GetDeliveryFor(learnAimRef))
            .Returns(mockLARSDel.Object);
            service
            .Setup(x => x.GetAnnualValuesFor(learnAimRef))
            .Returns(larsAnnualValues);

            var mockDDRule07 = new Mock <IDerivedData_07Rule>(MockBehavior.Strict);

            mockDDRule07
            .Setup(x => x.IsApprenticeship(progType))
            .Returns(false);

            var mockDDRule21 = new Mock <IDerivedData_21Rule>(MockBehavior.Strict);

            mockDDRule21
            .Setup(x => x.IsAdultFundedUnemployedWithOtherStateBenefits(mockDelivery.Object, mockLearner.Object))
            .Returns(false);

            var mockDDRule28 = new Mock <IDerivedData_28Rule>(MockBehavior.Strict);

            mockDDRule28
            .Setup(x => x.IsAdultFundedUnemployedWithBenefits(mockDelivery.Object, mockLearner.Object))
            .Returns(false);

            var mockDDRule29 = new Mock <IDerivedData_29Rule>(MockBehavior.Strict);

            mockDDRule29
            .Setup(x => x.IsInflexibleElementOfTrainingAimLearningDelivery(mockDelivery.Object))
            .Returns(false);

            var mockDateTimeQueryService = new Mock <IDateTimeQueryService>(MockBehavior.Strict);

            mockDateTimeQueryService.Setup(x => x.YearsBetween(birthDate, testDate)).Returns(24);
            mockDateTimeQueryService.Setup(x => x.IsDateBetween(mockDelivery.Object.LearnStartDate, mockLARSDel.Object.EffectiveFrom, mockLARSDel.Object.EffectiveTo ?? DateTime.MaxValue, true))
            .Returns(false);

            var sut = new LearnDelFAMType_66Rule(
                handler.Object,
                service.Object,
                mockDDRule07.Object,
                mockDDRule21.Object,
                mockDDRule28.Object,
                mockDDRule29.Object,
                mockDateTimeQueryService.Object);

            sut.ValidateDeliveries(mockLearner.Object);

            handler.VerifyAll();
            service.VerifyAll();
            mockDDRule07.VerifyAll();
            mockDDRule21.VerifyAll();
            mockDDRule28.VerifyAll();
            mockDDRule29.VerifyAll();
            mockDateTimeQueryService.VerifyAll();
        }
示例#19
0
        public void InvalidItemRaisesValidationMessage()
        {
            const string LearnRefNumber = "123456789X";

            var testDate = DateTime.Parse("2013-08-01");

            var status = new Mock <ILearnerEmploymentStatus>();

            status
            .SetupGet(x => x.DateEmpStatApp)
            .Returns(testDate);
            status
            .SetupGet(x => x.EmpStat)
            .Returns(EmploymentStatusEmpStats.InPaidEmployment);

            var employmentStatuses = new ILearnerEmploymentStatus[] { status.Object };

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testDate);
            mockDelivery
            .SetupGet(y => y.AimType)
            .Returns(1);

            var deliveries = new ILearningDelivery[] { mockDelivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);
            mockLearner
            .SetupGet(y => y.LearnerEmploymentStatuses)
            .Returns(employmentStatuses);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle("EmpId_10", LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("EmpId", "(missing)"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("EmpStat", EmploymentStatusEmpStats.InPaidEmployment))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var lEmpQS = new Mock <ILearnerEmploymentStatusQueryService>(MockBehavior.Strict);

            lEmpQS
            .Setup(x => x.LearnerEmploymentStatusForDate(employmentStatuses, testDate))
            .Returns(status.Object);

            var dd07 = new Mock <IDerivedData_07Rule>(MockBehavior.Strict);

            dd07
            .Setup(dd => dd.IsApprenticeship(mockDelivery.Object.ProgTypeNullable)).Returns(true);

            var sut = new EmpId_10Rule(handler.Object, lEmpQS.Object, dd07.Object);

            sut.Validate(mockLearner.Object);

            handler.VerifyAll();
            lEmpQS.VerifyAll();
            dd07.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage()
        {
            // arrange
            const string LearnRefNumber = "123456789X";
            const string learnAimRef    = "salddfkjeifdnase";

            var mockFAM = new Mock <ILearningDeliveryFAM>();

            mockFAM
            .SetupGet(x => x.LearnDelFAMType)
            .Returns(Monitoring.Delivery.Types.FullOrCoFunding);
            mockFAM
            .SetupGet(x => x.LearnDelFAMCode)
            .Returns("1");

            var fams = Collection.Empty <ILearningDeliveryFAM>();

            fams.Add(mockFAM.Object);

            var testDate     = DateTime.Parse("2017-08-01");
            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnAimRef)
            .Returns(learnAimRef);
            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testDate);
            mockDelivery
            .SetupGet(y => y.FundModel)
            .Returns(TypeOfFunding.AdultSkills);
            mockDelivery
            .SetupGet(y => y.LearningDeliveryFAMs)
            .Returns(fams.AsSafeReadOnlyList());

            var deliveries = Collection.Empty <ILearningDelivery>();

            deliveries.Add(mockDelivery.Object);

            var birthDate   = DateTime.Parse("1993-07-01");
            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.DateOfBirthNullable)
            .Returns(birthDate);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries.AsSafeReadOnlyList());

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnDelFAMType_66, LearnRefNumber, 0, Moq.It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("FundModel", 35))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMType", "FFI"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMCode", "1"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("DateOfBirth", AbstractRule.AsRequiredCultureDate(birthDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var mock = new Mock <ILARSLearningDelivery>();

            mock
            .SetupGet(x => x.NotionalNVQLevelv2)
            .Returns(LARSNotionalNVQLevelV2.EntryLevel);

            var service = new Mock <ILARSDataService>(MockBehavior.Strict);

            service
            .Setup(x => x.GetDeliveryFor(learnAimRef))
            .Returns(mock.Object);

            var mockDDRule07 = new Mock <IDerivedData_07Rule>(MockBehavior.Strict);
            var mockDDRule21 = new Mock <IDerivedData_21Rule>(MockBehavior.Strict);

            mockDDRule21
            .Setup(x => x.IsAdultFundedUnemployedWithOtherStateBenefits(mockDelivery.Object, mockLearner.Object))
            .Returns(false);

            var mockDDRule28 = new Mock <IDerivedData_28Rule>(MockBehavior.Strict);

            mockDDRule28
            .Setup(x => x.IsAdultFundedUnemployedWithBenefits(mockDelivery.Object, mockLearner.Object))
            .Returns(false);

            var mockDDRule29 = new Mock <IDerivedData_29Rule>(MockBehavior.Strict);

            var sut = new LearnDelFAMType_66Rule(handler.Object, service.Object, mockDDRule07.Object, mockDDRule21.Object, mockDDRule28.Object, mockDDRule29.Object);

            // act
            sut.ValidateDeliveries(mockLearner.Object);

            // assert
            handler.VerifyAll();
            service.VerifyAll();
            mockDDRule07.VerifyAll();
            mockDDRule21.VerifyAll();
            mockDDRule28.VerifyAll();
            mockDDRule29.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage()
        {
            // arrange
            const string LearnRefNumber = "123456789X";

            var testDate = DateTime.Parse("2013-08-01");

            var status = new Mock <ILearnerEmploymentStatus>();

            var statii = new ILearnerEmploymentStatus[] { status.Object };

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testDate);

            var deliveries = new ILearningDelivery[] { mockDelivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);
            mockLearner
            .SetupGet(y => y.LearnerEmploymentStatuses)
            .Returns(statii);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle("EmpStat_06", LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("DateEmpStatApp", null))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("PlanLearnHours", null))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("PlanEEPHours", null))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var commonOps = new Mock <IProvideRuleCommonOperations>(MockBehavior.Strict);

            commonOps
            .Setup(x => x.GetEmploymentStatusOn(testDate, statii))
            .Returns((ILearnerEmploymentStatus)null);
            commonOps
            .Setup(x => x.HasQualifyingFunding(mockDelivery.Object, 25, 82))
            .Returns(true);
            commonOps
            .Setup(x => x.HasQualifyingStart(mockDelivery.Object, DateTime.Parse("2013-08-01"), DateTime.Parse("2014-07-31")))
            .Returns(true);
            commonOps
            .Setup(x => x.IsTraineeship(mockDelivery.Object))
            .Returns(false);

            var sut = new EmpStat_06Rule(handler.Object, commonOps.Object);

            // act
            sut.Validate(mockLearner.Object);

            // assert
            handler.VerifyAll();
            commonOps.VerifyAll();
        }
示例#22
0
        public void Bug84886_RaisesValidationMessage()
        {
            const string learnRefNumber = "0LstartDt07";
            const string learnAimRef    = "50104767";
            const int    pwayCode       = 0;
            const int    progType       = 2;
            const int    fworkCode      = 420;

            var testDate = DateTime.Parse("2018-10-14");
            var delivery = new Mock <ILearningDelivery>();

            delivery
            .SetupGet(x => x.LearnStartDate)
            .Returns(testDate);
            delivery
            .SetupGet(x => x.LearnAimRef)
            .Returns(learnAimRef);
            delivery
            .SetupGet(x => x.AimType)
            .Returns(3);
            delivery
            .SetupGet(x => x.ProgTypeNullable)
            .Returns(progType);
            delivery
            .SetupGet(x => x.FworkCodeNullable)
            .Returns(fworkCode);
            delivery
            .SetupGet(x => x.PwayCodeNullable)
            .Returns(pwayCode);

            var deliveries = new ILearningDelivery[] { delivery.Object };

            var learner = new Mock <ILearner>();

            learner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(learnRefNumber);
            learner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnStartDate_07, learnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("PwayCode", pwayCode))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("ProgType", progType))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("FworkCode", fworkCode))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var ddRule04 = new Mock <IDerivedData_04Rule>(MockBehavior.Strict);

            ddRule04
            .Setup(x => x.GetEarliesStartDateFor(delivery.Object, deliveries))
            .Returns(testDate);

            var startDate = DateTime.Parse("2011-06-06");
            var endDate   = DateTime.Parse("2013-03-06");

            var frameworkAim = new Mock <ILARSFrameworkAim>();

            frameworkAim
            .SetupGet(x => x.ProgType)
            .Returns(progType);
            frameworkAim
            .SetupGet(x => x.FworkCode)
            .Returns(fworkCode);
            frameworkAim
            .SetupGet(x => x.PwayCode)
            .Returns(pwayCode);
            frameworkAim
            .SetupGet(x => x.StartDate)
            .Returns(startDate);
            frameworkAim
            .SetupGet(x => x.EndDate)
            .Returns(endDate);

            var larsDelivery = new Mock <ILARSLearningDelivery>();

            larsDelivery
            .SetupGet(x => x.FrameworkCommonComponent)
            .Returns(LARSConstants.CommonComponents.NotApplicable);

            var larsData = new Mock <ILARSDataService>(MockBehavior.Strict);

            larsData
            .Setup(x => x.GetFrameworkAimsFor(learnAimRef))
            .Returns(new ILARSFrameworkAim[] { frameworkAim.Object });
            larsData
            .Setup(x => x.GetDeliveryFor(learnAimRef))
            .Returns(larsDelivery.Object);

            var learningDeliveryFAMQS = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);

            learningDeliveryFAMQS
            .Setup(x => x.HasLearningDeliveryFAMType(
                       delivery.Object.LearningDeliveryFAMs,
                       "RES"))
            .Returns(false);

            var dateTimeQueryServiceMock = new Mock <IDateTimeQueryService>();

            dateTimeQueryServiceMock.Setup(x => x.IsDateBetween(testDate, DateTime.MinValue, frameworkAim.Object.EndDate.Value, true)).Returns(false);

            var dd07 = new Mock <IDerivedData_07Rule>(MockBehavior.Strict);

            dd07
            .Setup(dd => dd.IsApprenticeship(delivery.Object.ProgTypeNullable)).Returns(true);

            var sut = NewRule(handler.Object, ddRule04.Object, larsData.Object, learningDeliveryFAMQS.Object, dateTimeQueryServiceMock.Object, dd07.Object);

            sut.Validate(learner.Object);

            handler.VerifyAll();
            ddRule04.VerifyAll();
            larsData.VerifyAll();
            learningDeliveryFAMQS.VerifyAll();
            dd07.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage()
        {
            // arrange
            const string LearnRefNumber = "123456789X";
            const string learnAimRef    = "salddfkjeifdnase";
            const int    fundModel      = TypeOfFunding.AdultSkills;
            const string famType        = Monitoring.Delivery.Types.FullOrCoFunding;
            const string famCode        = "2";
            DateTime?    dateOfBirth    = new DateTime(1996, 8, 1);
            DateTime     learnStartDate = new DateTime(2017, 8, 1);

            var mockFAM = new Mock <ILearningDeliveryFAM>();

            mockFAM
            .SetupGet(x => x.LearnDelFAMType)
            .Returns(famType);
            mockFAM
            .SetupGet(x => x.LearnDelFAMCode)
            .Returns(famCode);

            var fams = new ILearningDeliveryFAM[] { mockFAM.Object };

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnAimRef)
            .Returns(learnAimRef);
            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(learnStartDate);
            mockDelivery
            .SetupGet(y => y.FundModel)
            .Returns(fundModel);
            mockDelivery
            .SetupGet(y => y.LearningDeliveryFAMs)
            .Returns(fams);

            var deliveries = new ILearningDelivery[] { mockDelivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.PriorAttainNullable)
            .Returns(TypeOfPriorAttainment.FullLevel2);
            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.DateOfBirthNullable)
            .Returns(dateOfBirth);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.LearnDelFAMType_62, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("FundModel", fundModel))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMType", famType))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnDelFAMCode", famCode))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(learnStartDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("DateOfBirth", AbstractRule.AsRequiredCultureDate(dateOfBirth)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var mock = new Mock <ILARSLearningDelivery>();

            mock
            .SetupGet(x => x.NotionalNVQLevelv2)
            .Returns(LARSNotionalNVQLevelV2.Level2);

            var service = new Mock <ILARSDataService>(MockBehavior.Strict);

            service
            .Setup(x => x.GetDeliveryFor(learnAimRef))
            .Returns(mock.Object);

            var mockDDRule07 = new Mock <IDerivedData_07Rule>(MockBehavior.Strict);
            var mockDDRule21 = new Mock <IDerivedData_21Rule>(MockBehavior.Strict);

            mockDDRule21
            .Setup(x => x.IsAdultFundedUnemployedWithOtherStateBenefits(mockDelivery.Object, mockLearner.Object))
            .Returns(false);

            var mockDDRule28 = new Mock <IDerivedData_28Rule>(MockBehavior.Strict);

            mockDDRule28
            .Setup(x => x.IsAdultFundedUnemployedWithBenefits(mockDelivery.Object, mockLearner.Object))
            .Returns(false);

            var mockDDRule29 = new Mock <IDerivedData_29Rule>(MockBehavior.Strict);

            var sut = new LearnDelFAMType_62Rule(handler.Object, service.Object, mockDDRule07.Object, mockDDRule21.Object, mockDDRule28.Object, mockDDRule29.Object);

            // act
            sut.ValidateDeliveries(mockLearner.Object);

            // assert
            handler.VerifyAll();
            service.VerifyAll();
            mockDDRule07.VerifyAll();
            mockDDRule21.VerifyAll();
            mockDDRule28.VerifyAll();
            mockDDRule29.VerifyAll();
        }
        public void InvalidItemRaisesValidationMessage()
        {
            // arrange
            const string LearnRefNumber = "123456789X";

            var testDate = DateTime.Parse("2013-08-01");

            var status = new Mock <ILearnerEmploymentStatus>();

            status
            .SetupGet(x => x.DateEmpStatApp)
            .Returns(testDate);
            status
            .SetupGet(x => x.EmpStat)
            .Returns(TypeOfEmploymentStatus.InPaidEmployment);

            var statii = new ILearnerEmploymentStatus[] { status.Object };

            var mockDelivery = new Mock <ILearningDelivery>();

            mockDelivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testDate);

            var deliveries = new ILearningDelivery[] { mockDelivery.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);
            mockLearner
            .SetupGet(y => y.LearnerEmploymentStatuses)
            .Returns(statii);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle("EmpId_10", LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("EmpId", "(missing)"))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("EmpStat", TypeOfEmploymentStatus.InPaidEmployment))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var commonOps = new Mock <IProvideRuleCommonOperations>(MockBehavior.Strict);

            commonOps
            .Setup(x => x.GetEmploymentStatusOn(testDate, statii))
            .Returns(status.Object);
            commonOps
            .Setup(x => x.InApprenticeship(mockDelivery.Object))
            .Returns(true);
            commonOps
            .Setup(x => x.InAProgramme(mockDelivery.Object))
            .Returns(true);

            var sut = new EmpId_10Rule(handler.Object, commonOps.Object);

            // act
            sut.Validate(mockLearner.Object);

            // assert
            handler.VerifyAll();
            commonOps.VerifyAll();
        }
示例#25
0
        public void InvalidItemRaisesValidationMessage(int candidate, params int[] eligibilities)
        {
            const string LearnRefNumber = "123456789X";
            const string conRefNumber   = "test-Con-Ref";

            var testDate = DateTime.Parse("2016-06-14");

            var deliveries = new List <ILearningDelivery>();

            for (int i = -5; i < 1; i++)
            {
                deliveries.Add(GetTestDelivery(testDate.AddDays(i), conRefNumber, i));
            }

            var mockStatus = new Mock <ILearnerEmploymentStatus>();

            mockStatus
            .SetupGet(x => x.EmpStat)
            .Returns(candidate);

            var employmentStatuses = new ILearnerEmploymentStatus[] { mockStatus.Object };

            var mockLearner = new Mock <ILearner>();

            mockLearner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            mockLearner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);
            mockLearner
            .SetupGet(x => x.LearnerEmploymentStatuses)
            .Returns(employmentStatuses);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.EmpStat_14, LearnRefNumber, 0, Moq.It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("EmpStat", candidate))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("ConRefNumber", conRefNumber))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var esfEmploymentStatuses = new List <IEsfEligibilityRuleEmploymentStatus>();

            eligibilities.ForEach(x => esfEmploymentStatuses.Add(GetEligibility(x)));

            var fcsData = new Mock <IFCSDataService>(MockBehavior.Strict);

            fcsData
            .Setup(x => x.GetEligibilityRuleEmploymentStatusesFor(conRefNumber))
            .Returns(esfEmploymentStatuses);

            var lEmpQS = new Mock <ILearnerEmploymentStatusQueryService>(MockBehavior.Strict);

            lEmpQS
            .Setup(x => x.LearnerEmploymentStatusForDate(employmentStatuses, testDate))
            .Returns(mockStatus.Object);

            var sut = new EmpStat_14Rule(handler.Object, fcsData.Object, lEmpQS.Object);

            sut.Validate(mockLearner.Object);

            handler.VerifyAll();
            fcsData.VerifyAll();
        }
示例#26
0
        public void InvalidItemRaisesValidationMessage()
        {
            const string LearnRefNumber = "123456789X";

            var testStart = DateTime.Parse("2016-05-01");
            var testEnd   = DateTime.Parse("2017-05-01");

            var delivery = new Mock <ILearningDelivery>();

            delivery
            .SetupGet(y => y.FundModel)
            .Returns(99);
            delivery
            .SetupGet(y => y.LearnStartDate)
            .Returns(testStart);
            delivery
            .SetupGet(y => y.LearnPlanEndDate)
            .Returns(testEnd);
            delivery
            .SetupGet(y => y.LearnActEndDateNullable)
            .Returns(DateTime.Today);

            var deliveries = new ILearningDelivery[] { delivery.Object };

            var learner = new Mock <ILearner>();

            learner
            .SetupGet(x => x.LearnRefNumber)
            .Returns(LearnRefNumber);
            learner
            .SetupGet(x => x.ULN)
            .Returns(ValidationConstants.TemporaryULN);
            learner
            .SetupGet(x => x.LearningDeliveries)
            .Returns(deliveries);

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);

            handler
            .Setup(x => x.Handle(RuleNameConstants.ULN_06, LearnRefNumber, 0, It.IsAny <IEnumerable <IErrorMessageParameter> >()));
            handler
            .Setup(x => x.BuildErrorMessageParameter("ULN", ValidationConstants.TemporaryULN))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("FilePrepDate", AbstractRule.AsRequiredCultureDate(TestPreparationDate)))
            .Returns(new Mock <IErrorMessageParameter>().Object);
            handler
            .Setup(x => x.BuildErrorMessageParameter("LearnStartDate", AbstractRule.AsRequiredCultureDate(testStart)))
            .Returns(new Mock <IErrorMessageParameter>().Object);

            var academicYear = new Mock <IAcademicYearDataService>(MockBehavior.Strict);

            academicYear
            .Setup(x => x.JanuaryFirst())
            .Returns(TestNewYearDate);

            var dateTime = new Mock <IDateTimeQueryService>(MockBehavior.Strict);

            dateTime
            .Setup(x => x.DaysBetween(It.IsAny <DateTime>(), It.IsAny <DateTime>()))
            .ReturnsInOrder(4, 5, 60);

            var fileData = new Mock <IFileDataService>(MockBehavior.Strict);

            fileData
            .Setup(x => x.FilePreparationDate())
            .Returns(TestPreparationDate);

            var learningDeliveryFAMQS = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);

            learningDeliveryFAMQS
            .Setup(x => x.HasLearningDeliveryFAMCodeForType(
                       delivery.Object.LearningDeliveryFAMs,
                       "LDM",
                       "034"))
            .Returns(false);
            learningDeliveryFAMQS
            .Setup(x => x.HasLearningDeliveryFAMCodeForType(
                       delivery.Object.LearningDeliveryFAMs,
                       "ACT",
                       "1"))
            .Returns(false);
            learningDeliveryFAMQS
            .Setup(x => x.HasLearningDeliveryFAMCodeForType(
                       delivery.Object.LearningDeliveryFAMs,
                       "ADL",
                       "1"))
            .Returns(true);

            var sut = new ULN_06Rule(handler.Object, academicYear.Object, dateTime.Object, fileData.Object, learningDeliveryFAMQS.Object);

            sut.Validate(learner.Object);

            handler.VerifyAll();
            academicYear.VerifyAll();
            dateTime.VerifyAll();
            fileData.VerifyAll();
            learningDeliveryFAMQS.VerifyAll();
        }