public ActionResult Rules() { var ruleinfo = RuleDiscoveryProvider.GetDescriptions(Assembly.GetAssembly(typeof(VoatRuleContext))).Where(x => x.Enabled).Select(x => new RuleInformationWithOutcome(x)).OrderBy(x => x.Info.Rule.Number).ToList(); RuleOutcome unevaluated = new RuleOutcome(RuleResult.Unevaluated, "UnevaluatedRule", "0.0", "This rule is unevaluated."); if (User.Identity.IsAuthenticated) { var context = new VoatRuleContext(User); //run every rule we can for the current user foreach (var rule in VoatRulesEngine.Instance.Rules) { var info = ruleinfo.FirstOrDefault(x => x.Info.Rule.Name == rule.Name && x.Info.Rule.Number == rule.Number); if (info != null) { RuleOutcome outcome = null; if (((Rule <VoatRuleContext>)rule).TryEvaluate(context, out outcome)) { info.Outcome = outcome; } else { info.Outcome = unevaluated; } } } } return(View("Rules", ruleinfo)); }
public void TestRuleDescriptionProvider() { var descriptions = RuleDiscoveryProvider.GetDescriptions(Assembly.Load("Voat.Business")); Assert.AreNotEqual(0, descriptions.Count); }