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