public void TestFraudCheckerCanLoadRepository() { var mockRepo = Mock.Of<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var checker = new FraudChecker(mockOrder.Object, mockRepo); Assert.IsTrue(checker.IsRepositoryLoaded); Assert.IsFalse(checker.IsRulesLoaded); }
public FraudCheckActor(ICollectionStore <Customer> customeStore, ICollectionStore <Order> ordeStore, ICollectionStore <Payment> paymentStore, FraudChecker fraudChecker) { _fraudChecker = fraudChecker; _paymentStore = paymentStore; _ordeStore = ordeStore; _customeStore = customeStore; }
public void TestFraudCheckerCanFailRule() { var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRule = RuleGenerators.FetchMockedRule(true); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRule.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); checker.RunRules(); Assert.AreEqual(1, checker.CountOfRulesFailed); Assert.AreEqual(0, checker.CountOfRulesPassed); }
public void TestFraudCheckerCanPassAndFailRuleViaReport() { var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRuleInError = RuleGenerators.FetchMockedRule(true); var mockRulePassing = RuleGenerators.FetchMockedRule(false); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRuleInError.Object, mockRulePassing.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); var report = checker.RunRules(); Assert.AreEqual(1, report.RulesFailed); Assert.AreEqual(1, report.RulesPassed); Assert.AreEqual(report.RulesFailed, checker.CountOfRulesFailed); Assert.AreEqual(report.RulesPassed, checker.CountOfRulesPassed); }
public void TestReusability() { var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRuleFailing = RuleGenerators.FetchMockedRule(true); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRuleFailing.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); checker.RunRules(); var mockOrder2 = new Mock<IDummyOrderObject>(); checker.LoadOrder(mockOrder2.Object); Assert.AreEqual(0, checker.CountOfRulesFailed); Assert.AreEqual(0, checker.CountOfRulesPassed); Assert.AreEqual(0, checker.CountOfRulesRan); Assert.AreEqual(0, checker.ReportOfFailingRules.Count); Assert.AreEqual(0, checker.ReportOfPassingRules.Count); }
public void TestOrdersInSequence() { var mockRepo = new Mock<IFraudRepository>(); var orders = new List<IDummyOrderObject>(); for (var i = 0; i < 6; i++) { orders.Add(new Mock<IDummyOrderObject>().Object); } var mockRuleFailing = RuleGenerators.FetchMockedRule(true); var mockRulePassing = RuleGenerators.FetchMockedRule(false); mockRepo .SetupSequence(m => m.FetchAllRules()) .Returns(new List<IFraudRule> { mockRuleFailing.Object }) .Returns(new List<IFraudRule> { mockRulePassing.Object }) .Returns(new List<IFraudRule> { mockRuleFailing.Object }) .Returns(new List<IFraudRule> { mockRulePassing.Object }) .Returns(new List<IFraudRule> { mockRuleFailing.Object }) .Returns(new List<IFraudRule> { mockRulePassing.Object }); var passed = 0; var failed = 0; foreach (var order in orders) { var checker = new FraudChecker(order, mockRepo.Object); var report = checker.RunRules(); if (report.OverallResult) { passed++; } else { failed++; } } Assert.AreEqual(3, passed); Assert.AreEqual(3, failed); }
public void TestFraudCheckerUsesChannelKey() { var channelKey = "abc"; var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); mockRepo.Setup(m => m.FetchRulesByChannel(channelKey)).Returns(new List<IFraudRule>()); mockRepo.Setup(m => m.FetchAllRules()).Throws(new NotImplementedException()); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object, channelKey); checker.LoadRules(); Assert.IsTrue(checker.IsRulesLoaded); }
public void TestFraudCheckerStoresPassingRuleNamesViaReport() { var name = "ruleName"; var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRule = RuleGenerators.FetchMockedRule(false, name); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRule.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); var report = checker.RunRules(); Assert.IsTrue(report.ReportOfPassingRules.Contains(name)); }
public void TestFraudCheckerStoresFailingRuleMessagesViaReport() { var name = "ruleName"; var message = "rule failed"; var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRule = RuleGenerators.FetchMockedRule(true, name, message); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRule.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); var report = checker.RunRules(); Assert.AreEqual(message, report.ReportOfFailingRules[name]); }
public void TestFraudCheckerReturnsPassResult() { var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRulePassing = RuleGenerators.FetchMockedRule(false); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRulePassing.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); var report = checker.RunRules(); Assert.IsTrue(report.OverallResult); }
public void TestFraudCheckerLoadState() { var mockOrder = new Mock<IDummyOrderObject>(); var checker = new FraudChecker(mockOrder.Object); Assert.IsFalse(checker.IsRulesLoaded); }
public void TestFraudCheckerCanRunRuleViaReport() { var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRule = RuleGenerators.FetchMockedRule(); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRule.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); var report = checker.RunRules(); Assert.AreEqual(1, report.RulesRan); }
public void TestFraudCheckerCanRunRules() { var mockRepo = new Mock<IFraudRepository>(); var mockOrder = new Mock<IDummyOrderObject>(); var mockRule1 = RuleGenerators.FetchMockedRule("rule 1"); var mockRule2 = RuleGenerators.FetchMockedRule("rule 2"); mockRepo.Setup(m => m.FetchAllRules()).Returns(new List<IFraudRule> { mockRule1.Object, mockRule2.Object }); var checker = new FraudChecker(mockOrder.Object, mockRepo.Object); checker.RunRules(); Assert.AreEqual(2, checker.CountOfRulesRan); }