public void ReferInvalidFrequentFlyerApplications()
        {
            Mock <IFrequentFlyerNumberValidator> mockValidator =
                new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Returns(false);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication();

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
        public void ValidateFrequentFlyerNumberForLowIncomeApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication
            {
                FrequentFlyerNumber = "q"
            };

            sut.Evaluate(application);

            mockValidator.Verify(x => x.IsValid(It.IsAny <string>()), Times.Once);
        }
Beispiel #3
0
        public void ReferWhenFrequentFlyerValidatorError()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");
            mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Throws <Exception>();

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication
            {
                Age = 42
            };

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
Beispiel #4
0
        public void ReferYoungApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.DefaultValue = DefaultValue.Mock;

            mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Returns(true);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication {
                Age = 19
            };

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
Beispiel #5
0
        public void ValidateFrequentNumberForLowIncomeApplication()
        {
            var mockValidation = new Mock <IFrequentFlyerNumberValidator>();

            mockValidation.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");
            var sut = new CreditCardApplicationEvaluator(mockValidation.Object);



            var application = new CreditCardApplication {
                FrequentFlyerNumber = "q"
            };


            sut.Evaluate(application);

            mockValidation.Verify(x => x.IsValid(It.IsAny <string>()), Times.Exactly(1)); // kontrollerar att den körs endast en gång!
        }
        public void ReferFraudRisk()
        {
            Mock <FraudLookup> mockFraudLookup = new Mock <FraudLookup>();

            //mockFraudLookup.Setup(x => x.IsFraudRisk(It.IsAny<CreditCardApplication>()))
            //    .Returns(true);   // this no only work since not virtual any more
            mockFraudLookup.Protected()
            .Setup <bool>("CheckApplication", ItExpr.IsAny <CreditCardApplication>())
            .Returns(true);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object, mockFraudLookup.Object);

            var application = new CreditCardApplication();

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHumanFraudRisk, decision);
        }
        public void ReferFraudRisk()
        {
            Mock <FraudLookup> mockFraudLookup = new Mock <FraudLookup>();

            mockFraudLookup.Protected()
            .Setup <bool>("CheckApplication", ItExpr.IsAny <CreditCardApplication>())
            .Returns(true);

            // "Override" sut in the class field to create a version with fraud lookup
            var sut = new CreditCardApplicationEvaluator(mockValidator.Object,
                                                         mockFraudLookup.Object);

            var application = new CreditCardApplication();

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHumanFraudRisk, decision);
        }
Beispiel #8
0
        public void SetDetailedLookupForOlderApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication {
                Age = 30
            };

            sut.Evaluate(application);

            mockValidator.VerifySet(x => x.ValidationMode = It.IsAny <ValidationMode>(), Times.Once);

            // mockValidator.VerifyNoOtherCalls();
        }
        public void ValidateFrequentFlyerNumberForLowIncomeApplications1()//VERIFY METHOD CALLED SPECIFIC NUMBER OF TIMES
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication
            {
                FrequentFlyerNumber = "q"
            };

            sut.Evaluate(application);

            //check whether CreditCardApplicationEvaluator is called IsValid with Any value on mock IFrequentFlyerNumberValidator one time
            mockValidator.Verify(x => x.IsValid(It.IsAny <string>()), Times.Once);
        }
        public void ReferYoungApplications1()//above ReferYoungApplications test won't hit age block of code,so setup is needed
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.DefaultValue = DefaultValue.Mock;//SPECIFYING DEFAULLT VALUE BEHAVIOUR FOR LOOSE MOCKS.we added this after we have a hierarchy in interface properties

            mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Returns(true);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication {
                Age = 19
            };

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
Beispiel #11
0
        public void ReferHumanFrequentFlier()
        {
            //Create Mock object and introduce that as a DI to the CreditCardApplicationEvaluator class
            Mock <IFrequentFlierNumberService> mockValidator
                = new Mock <IFrequentFlierNumberService>();

            mockValidator.Setup(invalidfreqFlier => invalidfreqFlier.isValid("invalid")).Returns(false);

            //var sut = new CreditCardApplicationEvaluator(null); //Instead of sending null to the constructor, we send the mock objects
            var sut = new CreditCardApplicationEvaluator(mockValidator.Object); //Instead of sending null to the constructor, we send the mock objects

            var application = new CreditCardApplication {
                GrossSalary = 10000, FrequentFlierNumber = "invalid"
            };
            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.AreEqual(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
        public void ReferInvalidFrequentFlyerApplications_Sequence()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");
            mockValidator.SetupSequence(x => x.IsValid(It.IsAny <string>())).Returns(false).Returns(true);
            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);
            var app = new CreditCardApplication()
            {
                Age = 25
            };
            var firstDecision = sut.Evaluate(app);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, firstDecision);
            var secondDecision = sut.Evaluate(app);

            Assert.Equal(CreditCardApplicationDecision.AutoDeclined, secondDecision);
        }
        public void IncrementLookupCount()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");
            mockValidator.Setup(x => x.IsValid(It.IsAny <string>()))
            .Returns(true)
            .Raises(x => x.ValidatorLookupPerformed += null, EventArgs.Empty);
            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);
            var app = new CreditCardApplication()
            {
                FrequentFlyerNumber = "x", Age = 25
            };

            sut.Evaluate(app);
            // mockValidator.Raise(x => x.ValidatorLookupPerformed += null, EventArgs.Empty);
            Assert.Equal(1, sut.ValidatorLookupCount);
        }
Beispiel #14
0
        public void AcceptHighIncomeApplications()
        {
            Mock <IFrequentFlyerNumberValidator> mockValidator =
                new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);


            var application = new CreditCardApplication {
                GrossAnnualIncome = 100_000
            };

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.AutoAccepted, decision);
        }
Beispiel #15
0
        public void CheckLicenseKeyForLowIncomeApplications()
        {
            Mock <IFrequentFlyerNumberValidator> mockValidator =
                new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication
            {
                GrossAnnualIncome = 99_000
            };

            sut.Evaluate(application);

            mockValidator.VerifyGet(x => x.ServiceInformation.License.LicenseKey, Times.Once);
        }
        public void UseDetailedLookupForOlderApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.SetupAllProperties();
            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");
            //mockValidator.SetupProperty(x => x.ValidationMode);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication {
                Age = 30
            };

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(ValidationMode.Detailed, mockValidator.Object.ValidationMode);
        }
Beispiel #17
0
        public void ReferFraudRisk()
        {
            // Arrange
            var mockFraudLookup = new Mock <FraudLookup>();

            mockFraudLookup.Protected()
            .Setup <bool>("CheckApplication", ItExpr.IsAny <CreditCardApplication>())
            .Returns(true);

            this.sut = new CreditCardApplicationEvaluator(this.mockValidator.Object, mockFraudLookup.Object);
            var application = new CreditCardApplication();

            // Act
            var decision = this.sut.Evaluate(application);

            // Assert
            Assert.Equal(CreditCardApplicationDecision.ReferredToHumanFraudRisk, decision);
        }
        public void ShouldValidateFrequentlyFlyerNumberForLowIncomeApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            // 05-01 Verify Method
            var application = new CreditCardApplication();

            //var application = new CreditCardApplication { FrequentFlyerNumber = "q" };

            sut.Evaluate(application);

            // 05-03 Method Not Called
            mockValidator.Verify(x => x.IsValid(It.IsNotNull <string>()), "Frequent flyer passed should not be null");
        }
Beispiel #19
0
        public void AcceptedHighIncomeApplication()
        {
            // Arrange
            Mock <IFrequentFlyerNumberValidator> mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication()
            {
                GrossAnnualIncome = 100_000
            };

            // Act
            CreditCardApplicationDecision decision = sut.Evaluate(application);

            // Assert
            Assert.Equal(CreditCardApplicationDecision.AutoAccepted, decision);
        }
Beispiel #20
0
        public void NotValidateFrequentFlyerNumberForHighIncomeApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            //var application = new CreditCardApplication { GrossAnnualIncome = 100_000 };
            var application = new CreditCardApplication {
                GrossAnnualIncome = 99_000
            };

            sut.Evaluate(application);

            //verifying a method was not calling
            mockValidator.Verify(x => x.IsValid(It.IsAny <string>()), Times.Never);
        }
Beispiel #21
0
        public void ShouldReferYoungApplication()
        {
            // Arrange
            Mock <IFrequentFlyerNumberValidator> mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication()
            {
                Age = 10
            };

            // Act
            CreditCardApplicationDecision decision = sut.Evaluate(application);

            // Assert
            Assert.Equal(CreditCardApplicationDecision.ReferedToHuman, decision);
        }
        public void CreditCardApplication_EvauluateUsingOut_DeclinesLowIncomeApplication()
        {
            // Arrange
            var _sut         = new CreditCardApplicationEvaluator(_frequentFlyerNumberValidator.Object);
            var _application = new CreditCardApplication {
                GrossAnnualIncome = 19900m, Age = 25, FrequentFlyerNumber = "test4"
            };
            // Example of mocking methods that have out return values
            bool isValid = true;

            _frequentFlyerNumberValidator.Setup(x => x.IsValid(It.IsAny <string>(), out isValid));

            // Act
            CreditCardApplicationDecision decision = _sut.EvaluateUsingOut(_application);

            // Assert
            Assert.Equal(CreditCardApplicationDecision.AutoDeclined, decision);
        }
        public void Refer_Invalid_Frequent_Flyer_Applications()
        {
            Mock <IFrequentFlyerNumberValidator> mockValidator =
                new Mock <IFrequentFlyerNumberValidator>(MockBehavior.Strict);

            mockValidator.SetupAllProperties();


            mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Returns(false);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication();

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
Beispiel #24
0
        public void LinqToMocks()
        {
            //var mockValidator = new Mock<IFrequentFlyerNumberValidator>();
            //mockValidator.Setup(v => v.IsValid(It.IsAny<string>())).Returns(true);

            var mockValidator = Mock.Of <IFrequentFlyerNumberValidator>(validator =>
                                                                        validator.ServiceInformation.License.LicenseKey == "OK" &&
                                                                        validator.IsValid(It.IsAny <string>()) == true);

            var sut = new CreditCardApplicationEvaluator(mockValidator);

            var application = new CreditCardApplication {
                Age = 25
            };

            var decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.AutoDeclined, decision);
        }
        public void NotValidateFrequentFlyerNumberForHightIncomeApplications()
        {
            //arrange
            Mock <IFrequentFlyerNumberValidator> mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            CreditCardApplicationEvaluator sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            CreditCardApplication application = new CreditCardApplication {
                GrossAnnualIncome = 100_000
            };

            //act
            sut.Evaluate(application);

            //assert method should not be called
            mockValidator.Verify(x => x.IsValid(It.IsAny <string>()), Times.Never);
        }
        public void ShouldValidateFrequentFlyerNumberForLowIncomeApplications()
        {
            //arrange
            Mock <IFrequentFlyerNumberValidator> mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            CreditCardApplication application = new CreditCardApplication {
                FrequentFlyerNumber = "q"
            };

            //act
            sut.Evaluate(application);

            //assert method call
            mockValidator.Verify(x => x.IsValid(It.IsAny <string>()));
        }
Beispiel #27
0
        public void UseDetailedLookupForOlderApplications()
        {
            var mockValidator = new Mock <IFrequentFlyerNumberValidator>();

            //mockValidator.SetupProperty(x => x.ValidationMode);
            mockValidator.SetupAllProperties(); // this must be before any other Setups, otherwize the other Setup will be overwritten

            mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("OK");

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication {
                Age = 30
            };

            sut.Evaluate(application);

            Assert.Equal(ValidationMode.Detailed, mockValidator.Object.ValidationMode);
        }
Beispiel #28
0
        public void Refer_Young_Applications()
        {
            Mock <IFrequentFlyerNumberValidator> mockValidator
                = new Mock <IFrequentFlyerNumberValidator>();

            //TODO: 07 - Hago setup del metodo del validador
            mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Returns(true);

            //Inyecto ese mock
            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication {
                Age = 19
            };

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }
Beispiel #29
0
        public void ReferFraudRisk()
        {
            var mockValidator   = new Mock <IFrequentFlyerNumberValidator>();
            var mockFraudLookup = new Mock <FraudLookup>();

            //mockFraudLookup.Setup(x => x.IsFraudRisk(It.IsAny<CreditCardApplication>()))
            //    .Returns(true); // IsFraudRisk must be virtual for this to work
            mockFraudLookup.Protected()
            .Setup <bool>("CheckApplication", ItExpr.IsAny <CreditCardApplication>())
            .Returns(true);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object, mockFraudLookup.Object);

            var application = new CreditCardApplication();

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHumanFraudRisk, decision);
        }
Beispiel #30
0
        public void Refer_Invalid_Frequent_Flyer_Applications()
        {
            //TODO: 05 - Seteo el mock en modo Strict

            Mock <IFrequentFlyerNumberValidator> mockValidator =
                new Mock <IFrequentFlyerNumberValidator>(MockBehavior.Strict);

            //TODO: 06 - Hago Steup del metodo

            //mockValidator.Setup(x => x.IsValid(It.IsAny<string>())).Returns(false);

            var sut = new CreditCardApplicationEvaluator(mockValidator.Object);

            var application = new CreditCardApplication();

            CreditCardApplicationDecision decision = sut.Evaluate(application);

            Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision);
        }