Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RulesEngine listeners are not invoked when registered in an InferenceRulesEngine #239

Closed
fmbenhassine opened this issue Nov 14, 2019 · 0 comments
Labels
Milestone

Comments

@fmbenhassine
Copy link
Member

fmbenhassine commented Nov 14, 2019

As of v3.3.0, when a RulesEngineListener is registered in an InferenceRulesEngine, it is not invoked when firing the rules. Here is a failing test:

    @Test
    public void testRulesEngineListener() {
        // Given
        class StubRulesEngineListener implements RulesEngineListener {

            private boolean executedBeforeEvaluate;
            private boolean executedAfterExecute;

            @Override
            public void beforeEvaluate(Rules rules, Facts facts) {
                executedBeforeEvaluate = true;
            }

            @Override
            public void afterExecute(Rules rules, Facts facts) {
                executedAfterExecute = true;
            }

            private boolean isExecutedBeforeEvaluate() {
                return executedBeforeEvaluate;
            }

            private boolean isExecutedAfterExecute() {
                return executedAfterExecute;
            }
        }
        
        Facts facts = new Facts();
        facts.put("foo", true);
        DummyRule dummyRule = new DummyRule();
        Rules rules = new Rules(dummyRule);
        StubRulesEngineListener rulesEngineListener = new StubRulesEngineListener();

        // When
        InferenceRulesEngine rulesEngine = new InferenceRulesEngine();
        rulesEngine.registerRulesEngineListener(rulesEngineListener);
        rulesEngine.fire(rules, facts);

        // Then
        // Rules engine listener should be invoked
        assertThat(rulesEngineListener.isExecutedBeforeEvaluate()).isTrue();
        assertThat(rulesEngineListener.isExecutedAfterExecute()).isTrue();
        assertThat(dummyRule.isExecuted()).isTrue();
    }
@fmbenhassine fmbenhassine added this to the 4.0.0 milestone Nov 14, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

1 participant