issue #40 : checkRules must take into account rules order

pull/55/head
Mahmoud Ben Hassine 9 years ago
parent 8e4dfbd8b2
commit 804d9be98a

@ -122,6 +122,7 @@ class DefaultRulesEngine implements RulesEngine {
@Override
public Map<Rule, Boolean> checkRules() {
LOGGER.info("Checking rules");
sortRules();
Map<Rule, Boolean> result = new HashMap<>();
for (Rule rule : rules) {
result.put(rule, rule.evaluate());

@ -10,8 +10,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.*;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.Map;
@ -85,6 +84,22 @@ public class DefaultRulesEngineTest {
inOrder.verify(anotherRule).execute();
}
@Test
public void rulesMustBeCheckedInTheirNaturalOrder() throws Exception {
when(rule.evaluate()).thenReturn(true);
when(anotherRule.evaluate()).thenReturn(true);
when(rule.compareTo(anotherRule)).thenReturn(-1);
when(anotherRule.compareTo(rule)).thenReturn(1);
rulesEngine.registerRule(rule);
rulesEngine.registerRule(anotherRule);
rulesEngine.checkRules();
InOrder inOrder = inOrder(rule, anotherRule);
inOrder.verify(rule).evaluate();
inOrder.verify(anotherRule).evaluate();
}
@Test
public void actionsMustBeExecutedInTheDefinedOrder() {
rulesEngine.registerRule(annotatedRule);

Loading…
Cancel
Save