public void ShouldBePossibleEvaluateRuleAndFireExpressionListener() { var rule = new Rule(); rule.Name = "fake.rule"; rule.AddListener <IDictionary <string, object> >((o) => { o["Email"] = "*****@*****.**"; }); var filter = rule.AddAndFilter(); filter.Add(new EqualsConstraint("Name", "John Doe")); this.AddRule(rule); var data = new Dictionary <string, object>(); data["Name"] = "John Doe"; this.Engine.EvaluateAndFire(data); Assert.Equal("*****@*****.**", data["Email"]); }
public void ShouldBePossibleEvaluateRuleWithIsNullConstraintWithNotPresentProperty() { var rule = new Rule(); var filter = rule.AddAndFilter(); filter.Add(new IsNullConstraint("Name")); this.AddRule(rule); var rules = this.Engine.Evaluate(new { }); Assert.Equal(1, rules.Count()); }
public void ShouldBePossibleEvaluateRuleWithDynamicData() { var rule = new Rule(); var filter = rule.AddAndFilter(); filter.Add(new EqualsConstraint("Name", "John Doe")); this.AddRule(rule); var rules = this.Engine.Evaluate(new { Name = "John Doe" }); Assert.Equal(1, rules.Count()); }
public void ShouldBePossibleEvaluateRuleWithLessThanConstraint() { var rule = new Rule(); var filter = rule.AddAndFilter(); filter.Add(new LessThanConstraint("Age", 18)); this.AddRule(rule); var rules = this.Engine.Evaluate(new { Age = 17 }); Assert.Equal(1, rules.Count()); }
public void ShouldNotBePossibleEvaluateRuleWithStartsWithConstraintAndOtherStartSubstring() { var rule = new Rule(); var filter = rule.AddAndFilter(); filter.Add(new StartsWithConstraint("Name", "John")); this.AddRule(rule); var rules = this.Engine.Evaluate(new { Name = "ohn" }); Assert.Equal(0, rules.Count()); }
public void ShouldBePossibleEvaluateRuleWithIsUtcTodayConstraint() { var rule = new Rule(); var filter = rule.AddAndFilter(); filter.Add(new IsTodayConstraint("Birthday")); this.AddRule(rule); var rules = this.Engine.Evaluate(new { Birthday = DateTime.UtcNow }); Assert.Equal(1, rules.Count()); }
public void ShouldBePossibleEvaluateRuleWithNotEqualsConstraint() { var rule = new Rule(); var filter = rule.AddAndFilter(); filter.Add(new NotEqualsConstraint("Name", "John Doe")); this.AddRule(rule); var data = new Dictionary <string, object>(); data["Name"] = "Fake User"; var rules = this.Engine.Evaluate(data); Assert.Equal(1, rules.Count()); }
public void ShouldBePossibleEvaluateRuleAndFireListener() { var rule = new Rule(); rule.Name = "fake.rule"; rule.AddListener(new FakeRuleListener()); var filter = rule.AddAndFilter(); filter.Add(new EqualsConstraint("Name", "John Doe")); this.AddRule(rule); var data = new Dictionary <string, object>(); data["Name"] = "John Doe"; this.Engine.EvaluateAndFire(data); Assert.Equal(true, data["Changed"]); }
public void ShouldBePossibleEvaluateRuleWithCustomStrategy() { var rule = new Rule(); rule.Name = "fake.rule"; rule.AddAndFilter().Add(new EqualsConstraint("Name", "John Doe")); this.AddRule(rule); var data = new { Name = "John Doe" }; Assert.NotEmpty(this.Engine.Evaluate(data)); var customEngine = new RuleEngine(this.Pool, new EmptyRuleStrategy()); Assert.Empty(customEngine.Evaluate(data)); }