@Test public void testEventModel() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_EventModel.drl")); final KieSession wm = createKnowledgeSession(kbase); final RuleRuntimeEventListener wmel = mock(RuleRuntimeEventListener.class); wm.addEventListener(wmel); final Cheese stilton = new Cheese("stilton", 15); final FactHandle stiltonHandle = wm.insert(stilton); final ArgumentCaptor<ObjectInsertedEvent> oic = ArgumentCaptor.forClass(org.kie.api.event.rule.ObjectInsertedEvent.class); verify(wmel).objectInserted(oic.capture()); assertSame(stiltonHandle, oic.getValue().getFactHandle()); wm.update(stiltonHandle, stilton); final ArgumentCaptor<org.kie.api.event.rule.ObjectUpdatedEvent> ouc = ArgumentCaptor.forClass(org.kie.api.event.rule.ObjectUpdatedEvent.class); verify(wmel).objectUpdated(ouc.capture()); assertSame(stiltonHandle, ouc.getValue().getFactHandle()); wm.delete(stiltonHandle); final ArgumentCaptor<ObjectDeletedEvent> orc = ArgumentCaptor.forClass(ObjectDeletedEvent.class); verify(wmel).objectDeleted(orc.capture()); assertSame(stiltonHandle, orc.getValue().getFactHandle()); }
@Test public void testRuleChainingWithLogicalInserts() throws Exception { KnowledgeBase kbase = loadKnowledgeBase( "test_RuleChaining.drl" ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); // create working memory mock listener RuleRuntimeEventListener wml = Mockito.mock( RuleRuntimeEventListener.class ); org.kie.api.event.rule.AgendaEventListener ael = Mockito.mock( org.kie.api.event.rule.AgendaEventListener.class ); ksession.addEventListener( wml ); ksession.addEventListener( ael ); int fired = ksession.fireAllRules(); assertEquals( 3, fired ); // capture the arguments and check that the rules fired in the proper sequence ArgumentCaptor<org.kie.api.event.rule.AfterMatchFiredEvent> actvs = ArgumentCaptor.forClass( org.kie.api.event.rule.AfterMatchFiredEvent.class ); verify( ael, times( 3 ) ).afterMatchFired(actvs.capture()); List<org.kie.api.event.rule.AfterMatchFiredEvent> values = actvs.getAllValues(); assertThat( values.get( 0 ).getMatch().getRule().getName(), is( "init" ) ); assertThat( values.get( 1 ).getMatch().getRule().getName(), is( "r1" ) ); assertThat( values.get( 2 ).getMatch().getRule().getName(), is( "r2" ) ); verify( ael, never() ).matchCancelled(any(org.kie.api.event.rule.MatchCancelledEvent.class)); verify( wml, times( 2 ) ).objectInserted( any( org.kie.api.event.rule.ObjectInsertedEvent.class ) ); verify( wml, never() ).objectDeleted(any(ObjectDeletedEvent.class)); }
@Test public void testEventModel() throws Exception { KnowledgeBase kbase = SerializationHelper.serializeObject( loadKnowledgeBase( "test_EventModel.drl" ) ); StatefulKnowledgeSession wm = createKnowledgeSession( kbase ); RuleRuntimeEventListener wmel = mock( RuleRuntimeEventListener.class ); wm.addEventListener( wmel ); final Cheese stilton = new Cheese( "stilton", 15 ); final FactHandle stiltonHandle = wm.insert( stilton ); ArgumentCaptor<org.kie.api.event.rule.ObjectInsertedEvent> oic = ArgumentCaptor.forClass( org.kie.api.event.rule.ObjectInsertedEvent.class ); verify( wmel ).objectInserted( oic.capture() ); assertSame( stiltonHandle, oic.getValue().getFactHandle() ); wm.update( stiltonHandle, stilton ); ArgumentCaptor<org.kie.api.event.rule.ObjectUpdatedEvent> ouc = ArgumentCaptor.forClass( org.kie.api.event.rule.ObjectUpdatedEvent.class ); verify( wmel ).objectUpdated( ouc.capture() ); assertSame( stiltonHandle, ouc.getValue().getFactHandle() ); wm.retract( stiltonHandle ); ArgumentCaptor<ObjectDeletedEvent> orc = ArgumentCaptor.forClass( ObjectDeletedEvent.class ); verify( wmel ).objectDeleted(orc.capture()); assertSame( stiltonHandle, orc.getValue().getFactHandle() ); }
times( 2 ) ).objectDeleted(retracts.capture()); List<ObjectDeletedEvent> values = retracts.getAllValues(); assertThat( values.get( 0 ).getFactHandle(),