public CreditCardApplicationDecision Evaluate(CreditCardApplication application) { if (_fraudLookup != null && _fraudLookup.IsFraudRisk(application)) { return(CreditCardApplicationDecision.ReferredToHumanFraudRisk); } if (application.GrossAnnualIncome >= HighIncomeThreshold) { return(CreditCardApplicationDecision.AutoAccepted); } if (_validator.ServiceInformation.License.LicenseKey == "EXPIRED") { return(CreditCardApplicationDecision.ReferredToHuman); } _validator.ValidationMode = application.Age >= 30 ? ValidationMode.Detailed : ValidationMode.Quick; //var isValidFrequentFlyerNumber = //_validator.IsValid(application.FrequentFlyerNumber); bool isValidFrequentFlyerNumber; try { isValidFrequentFlyerNumber = _validator.IsValid(application.FrequentFlyerNumber); } catch (Exception) { // log return(CreditCardApplicationDecision.ReferredToHuman); } if (!isValidFrequentFlyerNumber) { return(CreditCardApplicationDecision.ReferredToHuman); } if (application.Age <= AutoReferralMaxAge) { return(CreditCardApplicationDecision.ReferredToHuman); } if (application.GrossAnnualIncome < LowIncomeThreshold) { return(CreditCardApplicationDecision.AutoDeclined); } return(CreditCardApplicationDecision.ReferredToHuman); }
public CreditCardApplicationDecision Evaluate(CreditCardApplication application) { if (application.GrossAnnualIncome >= HighIncomeThreshhold) { return(CreditCardApplicationDecision.AutoAccepted); } //if (_validator.LicenseKey == "EXPIRED") // return CreditCardApplicationDecision.ReferredToHuman; if (_validator.ServiceInformation.License.LicenseKey == "EXPIRED") { return(CreditCardApplicationDecision.ReferredToHuman); } _validator.ValidationMode = application.Age >= 30 ? ValidationMode.Detailed : ValidationMode.Quick; var isValidFrequentFlyerNumber = _validator.IsValid(application.FrequentFlyerNumber); bool isValidFrequentFlyerNumberExc; try { isValidFrequentFlyerNumberExc = _validator.IsValid(application.FrequentFlyerNumber); } catch (System.Exception) { return(CreditCardApplicationDecision.ReferredToHuman); } //05-04 Method Times Implement //_validator.IsValid(application.FrequentFlyerNumber); if (!isValidFrequentFlyerNumber) { return(CreditCardApplicationDecision.ReferredToHuman); } if (application.Age <= AutoReferralMaxAge) { return(CreditCardApplicationDecision.ReferredToHuman); } if (application.GrossAnnualIncome < LowIncomeThreshhold) { return(CreditCardApplicationDecision.AutoDeclined); } return(CreditCardApplicationDecision.ReferredToHuman); }
public void ReferWhenLicenseKeyExpired() { mockValidator.Setup(x => x.ServiceInformation.License.LicenseKey).Returns("EXPIRED"); var sut = new CreditCardApplicationEvaluator(mockValidator.Object); var application = new CreditCardApplications.CreditCardApplication { Age = 42 }; CreditCardApplicationDecision decision = sut.Evaluate(application); Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, decision); }
public void SetDetailedLookupForOlderApplications() { var application = new CreditCardApplications.CreditCardApplication { Age = 30 }; sut.Evaluate(application); mockValidator.VerifySet(p => p.ValidationMode = It.IsAny <ValidationMode>(), Times.Once); mockValidator.Verify(p => p.IsValid(null), Times.Once); mockValidator.VerifyNoOtherCalls(); }
public void ReferFraudRisk() { var mockFraudLookup = new Mock <FraudLookup>(); mockFraudLookup.Setup(p => p.IsFraudRisk(It.IsAny <CreditCardApplications.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 CreditCardApplications.CreditCardApplication(); var decision = sut.Evaluate(application); Assert.Equal(CreditCardApplicationDecision.ReferredToHumanFraudRisk, decision); }
public void IncrementLookupCount() { mockValidator.Setup(p => p.IsValid(It.IsAny <string>())) .Returns(true) .Raises(p => p.ValidatorLookupPerformed += null, EventArgs.Empty); var application = new CreditCardApplications.CreditCardApplication { FrequentFlyerNumber = "x", Age = 25 }; sut.Evaluate(application); //mockValidator.Raise(p => p.ValidatorLookupPerformed += null, EventArgs.Empty); Assert.Equal(1, sut.ValidatorLookupCount); }
public void ReferInvalidFrequentFlyerApplications_ReturnValuesSequence() { mockValidator.SetupSequence(p => p.IsValid(It.IsAny <string>())) .Returns(false) .Returns(true); var application = new CreditCardApplications.CreditCardApplication { Age = 25 }; var firstDecision = sut.Evaluate(application); Assert.Equal(CreditCardApplicationDecision.ReferredToHuman, firstDecision); var secondDecision = sut.Evaluate(application); Assert.Equal(CreditCardApplicationDecision.AutoDeclined, secondDecision); }
public void LinqToMocks() { var mockValidator = Mock.Of <IFrequentFlyerNumberValidator>( validator => validator.ServiceInformation.License.LicenseKey == "OK" && validator.IsValid(It.IsAny <string>()) == true ); // "Override" sut in class field to demonstrate LINQ setup var sut = new CreditCardApplicationEvaluator(mockValidator); var application = new CreditCardApplications.CreditCardApplication() { Age = 25 }; var decision = sut.Evaluate(application); Assert.Equal(CreditCardApplicationDecision.AutoDeclined, decision); }
public void DeclineLowIncomeApplications() { var mockValidator = new Mock <IFrequentFlyerNumberValidator>(MockBehavior.Strict); //ako e "x" shte vurne true inache - false //mockValidator.Setup(x => x.IsValid("x")).Returns(true); //ako ne ni puka kakvo se podava na metoda slagame isAny mockValidator.Setup(x => x.IsValid(It.IsAny <string>())).Returns(true); //mockValidator.Setup(x => x.IsValid(It.Is<string>(x => x.StartsWith('x')))).Returns(true); var sut = new CreditCardApplicationEvaluator(mockValidator.Object); var application = new CreditCardApplications.CreditCardApplication() { Age = 42, GrossAnnualIncome = 19999 }; var decision = sut.Evaluate(application); Assert.Equal(CreditCardApplicationDecision.AutoDeclined, decision); }
public CreditCardApplicationDecision Evaluate(CreditCardApplication application) { if (application.GrossAnnualIncome >= HighIncomeThreshold) { return(CreditCardApplicationDecision.AutoAccepted); } if (!_validator.IsValid(application.FrequentFlyerNumber)) { return(CreditCardApplicationDecision.ReferredToHuman); } if (application.Age <= AutoReferralMaxAge) { return(CreditCardApplicationDecision.ReferredToHuman); } if (application.GrossAnnualIncome < LowIncomeTrheshold) { return(CreditCardApplicationDecision.AutoDeclined); } return(CreditCardApplicationDecision.ReferredToHuman); }
public bool isFraudRisk(CreditCardApplication application) { return(CheckApplication(application)); }