public void IsNotCurrentMeetsExpectation(string candidate, string testDate, bool expectation)
        {
            var monitor = new Mock <ILearningDeliveryFAM>();

            monitor
            .SetupGet(x => x.LearnDelFAMType)
            .Returns(candidate.Substring(0, 3));
            monitor
            .SetupGet(x => x.LearnDelFAMCode)
            .Returns(candidate.Substring(3));

            var referenceDate = DateTime.Parse(testDate);

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

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

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

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

            var result = sut.IsNotCurrent(monitor.Object, referenceDate);

            Assert.Equal(expectation, result);
        }
        public void CheckDeliveryFAMsMeetsExpectation()
        {
            var delivery = new Mock <ILearningDelivery>();

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);
            var lookups = new Mock <IProvideLookupDetails>(MockBehavior.Strict);
            var learningDeliveryFAMQS = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);
            var sut = new LearnDelFAMType_06Rule(handler.Object, lookups.Object, learningDeliveryFAMQS.Object);

            sut.CheckDeliveryFAMs(delivery.Object, x => { });

            handler.VerifyAll();
            lookups.VerifyAll();
        }
        public void IsQualifyingDeliveryMeetsExpectation(bool expectation)
        {
            var delivery = new Mock <ILearningDelivery>();

            var handler = new Mock <IValidationErrorHandler>(MockBehavior.Strict);
            var lookups = new Mock <IProvideLookupDetails>(MockBehavior.Strict);
            var learningDeliveryFAMQS = new Mock <ILearningDeliveryFAMQueryService>(MockBehavior.Strict);

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

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

            var result = !sut.IsQualifyingDelivery(delivery.Object);

            Assert.Equal(expectation, result);

            handler.VerifyAll();
            lookups.VerifyAll();
        }
        public void ValidItemDoesNotRaiseValidationMessage(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);
            var lookups = new Mock <IProvideLookupDetails>(MockBehavior.Strict);

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

            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();
        }