From 40b456b670b404a67b73b3c1f16ff0736d5855c8 Mon Sep 17 00:00:00 2001 From: Mahmoud Ben Hassine Date: Tue, 12 Dec 2017 00:04:14 +0100 Subject: [PATCH] issue #121 : apply the RulesEngineListener to check method --- .../jeasy/rules/core/DefaultRulesEngine.java | 2 ++ .../rules/core/RulesEngineListenerTest.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/easy-rules-core/src/main/java/org/jeasy/rules/core/DefaultRulesEngine.java b/easy-rules-core/src/main/java/org/jeasy/rules/core/DefaultRulesEngine.java index 4efcfe5..b912a98 100644 --- a/easy-rules-core/src/main/java/org/jeasy/rules/core/DefaultRulesEngine.java +++ b/easy-rules-core/src/main/java/org/jeasy/rules/core/DefaultRulesEngine.java @@ -126,6 +126,7 @@ public final class DefaultRulesEngine implements RulesEngine { @Override public Map check(Rules rules, Facts facts) { + triggerListenersBeforeRules(rules, facts); LOGGER.info("Checking rules"); Map result = new HashMap<>(); for (Rule rule : rules) { @@ -133,6 +134,7 @@ public final class DefaultRulesEngine implements RulesEngine { result.put(rule, rule.evaluate(facts)); } } + triggerListenersAfterRules(rules, facts); return result; } diff --git a/easy-rules-core/src/test/java/org/jeasy/rules/core/RulesEngineListenerTest.java b/easy-rules-core/src/test/java/org/jeasy/rules/core/RulesEngineListenerTest.java index 8579bf0..a4bae43 100644 --- a/easy-rules-core/src/test/java/org/jeasy/rules/core/RulesEngineListenerTest.java +++ b/easy-rules-core/src/test/java/org/jeasy/rules/core/RulesEngineListenerTest.java @@ -69,4 +69,22 @@ public class RulesEngineListenerTest extends AbstractTest { inOrder.verify(rulesEngineListener2).afterExecute(rules, facts); } + @Test + public void rulesEngineListenersShouldBeCalledInOrderWhenCheckingRules() throws Exception { + // Given + when(rule1.evaluate(facts)).thenReturn(true); + rules.register(rule1); + + // When + rulesEngine.check(rules, facts); + + // Then + InOrder inOrder = inOrder(rule1, fact1, fact2, rulesEngineListener1, rulesEngineListener2); + inOrder.verify(rulesEngineListener1).beforeEvaluate(rules, facts); + inOrder.verify(rulesEngineListener2).beforeEvaluate(rules, facts); + inOrder.verify(rule1).evaluate(facts); + inOrder.verify(rulesEngineListener1).afterExecute(rules, facts); + inOrder.verify(rulesEngineListener2).afterExecute(rules, facts); + } + }