Search in sources :

Example 11 with Person

use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.

the class DecisionTableTest method testPullQueryWithFactDeclaration.

@Test
public void testPullQueryWithFactDeclaration() throws IllegalAccessException, InstantiationException {
    final Resource decisionTable = ResourceUtil.getDecisionTableResourceFromClasspath("queries.xls", getClass(), DecisionTableInputType.XLS);
    final KieBase kbase = KieBaseUtil.getKieBaseFromResources(kieBaseTestConfiguration, decisionTable);
    final FactType locationType = kbase.getFactType(TestConstants.PACKAGE_FUNCTIONAL, "Location");
    final KieSession ksession = kbase.newKieSession();
    final TrackingAgendaEventListener listener = new TrackingAgendaEventListener();
    ksession.addEventListener(listener);
    final Person peter = new Person("Peter");
    peter.setLikes("steak");
    final Object steakLocation = locationType.newInstance();
    locationType.set(steakLocation, "thing", "steak");
    locationType.set(steakLocation, "location", "table");
    final Object tableLocation = locationType.newInstance();
    locationType.set(tableLocation, "thing", "table");
    locationType.set(tableLocation, "location", "office");
    ksession.insert(peter);
    final FactHandle steakHandle = ksession.insert(steakLocation);
    final FactHandle tableHandle = ksession.insert(tableLocation);
    ksession.insert("pull");
    ksession.fireAllRules();
    Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isTrue();
    Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isFalse();
    listener.clear();
    // when location is changed of what Peter likes, pull query should
    // ignore it
    final Object steakLocation2 = locationType.newInstance();
    locationType.set(steakLocation2, "thing", "steak");
    locationType.set(steakLocation2, "location", "desk");
    final Object deskLocation = locationType.newInstance();
    locationType.set(deskLocation, "thing", "desk");
    locationType.set(deskLocation, "location", "office");
    ksession.insert(steakLocation2);
    ksession.insert(deskLocation);
    ksession.delete(steakHandle);
    ksession.delete(tableHandle);
    ksession.fireAllRules();
    Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
    Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isFalse();
    listener.clear();
    final Person paul = new Person("Paul");
    paul.setLikes("steak");
    ksession.insert(paul);
    ksession.fireAllRules();
    Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isTrue();
    Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isFalse();
    listener.clear();
    ksession.dispose();
}
Also used : TrackingAgendaEventListener(org.drools.testcoverage.common.listener.TrackingAgendaEventListener) FactHandle(org.kie.api.runtime.rule.FactHandle) KieBase(org.kie.api.KieBase) Resource(org.kie.api.io.Resource) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) FactType(org.kie.api.definition.type.FactType) Test(org.junit.Test)

Example 12 with Person

use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.

the class DecisionTableTest method testPushQueryWithFactDeclaration.

@Test
public void testPushQueryWithFactDeclaration() throws IllegalAccessException, InstantiationException {
    final Resource decisionTable = ResourceUtil.getDecisionTableResourceFromClasspath("queries.xls", getClass(), DecisionTableInputType.XLS);
    final KieBase kbase = KieBaseUtil.getKieBaseFromResources(kieBaseTestConfiguration, decisionTable);
    final FactType locationType = kbase.getFactType(TestConstants.PACKAGE_FUNCTIONAL, "Location");
    final KieSession ksession = kbase.newKieSession();
    final TrackingAgendaEventListener listener = new TrackingAgendaEventListener();
    ksession.addEventListener(listener);
    final Person peter = new Person("Peter");
    peter.setLikes("steak");
    final Object steakLocation = locationType.newInstance();
    locationType.set(steakLocation, "thing", "steak");
    locationType.set(steakLocation, "location", "table");
    final Object tableLocation = locationType.newInstance();
    locationType.set(tableLocation, "thing", "table");
    locationType.set(tableLocation, "location", "office");
    ksession.insert(peter);
    final FactHandle steakHandle = ksession.insert(steakLocation);
    final FactHandle tableHandle = ksession.insert(tableLocation);
    ksession.insert("push");
    ksession.fireAllRules();
    Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isTrue();
    Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
    listener.clear();
    // when location is changed of what Peter likes, push query should fire
    // rule
    final Object steakLocation2 = locationType.newInstance();
    locationType.set(steakLocation2, "thing", "steak");
    locationType.set(steakLocation2, "location", "desk");
    final Object deskLocation = locationType.newInstance();
    locationType.set(deskLocation, "thing", "desk");
    locationType.set(deskLocation, "location", "office");
    ksession.insert(steakLocation2);
    ksession.insert(deskLocation);
    ksession.delete(steakHandle);
    ksession.delete(tableHandle);
    ksession.fireAllRules();
    Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isTrue();
    Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
    listener.clear();
    final Person paul = new Person("Paul");
    paul.setLikes("steak");
    ksession.insert(paul);
    ksession.fireAllRules();
    Assertions.assertThat(listener.isRuleFired("testPushQueryRule")).isTrue();
    Assertions.assertThat(listener.isRuleFired("testPullQueryRule")).isFalse();
    listener.clear();
    ksession.dispose();
}
Also used : TrackingAgendaEventListener(org.drools.testcoverage.common.listener.TrackingAgendaEventListener) FactHandle(org.kie.api.runtime.rule.FactHandle) KieBase(org.kie.api.KieBase) Resource(org.kie.api.io.Resource) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) FactType(org.kie.api.definition.type.FactType) Test(org.junit.Test)

Example 13 with Person

use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.

the class GuidedDecisionTableTest method setUp.

@Before
public void setUp() throws Exception {
    barcelonaCityCenter = new Address("City Center", 1, "Barcelona");
    cottageInMountains = new Address("Mountains", 999, "Small Village");
    cottageInDesert = new Address("Sand Street", 1, "Desert Town");
    johnFromBarcelona = new Person("John", 18);
    peter70Years = new Person("Peter", 70);
    mary33Years = new Person("Mary", 33);
    johnFromBarcelona.setAddress(barcelonaCityCenter);
    elizabeth35Years = new Person("Elizabeth", 35);
    william25Years = new Person("William", 25);
}
Also used : Address(org.drools.testcoverage.common.model.Address) Person(org.drools.testcoverage.common.model.Person) Before(org.junit.Before)

Example 14 with Person

use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.

the class GuidedDecisionTableTest method testOptimizeAddressesMovePeopleToUnusedAddressOrBrno.

@Test
public void testOptimizeAddressesMovePeopleToUnusedAddressOrBrno() throws Exception {
    initKieSession("optimizeAddresses.gdst");
    final FactHandle mountainsCottage = kSession.insert(cottageInMountains);
    final FactHandle elizabeth = kSession.insert(elizabeth35Years);
    final FactHandle william = kSession.insert(william25Years);
    final FactHandle john = kSession.insert(johnFromBarcelona);
    kSession.fireAllRules();
    Assertions.assertThat(kSession.getObject(mountainsCottage)).isNotNull();
    Assertions.assertThat(kSession.getObject(elizabeth)).isNotNull();
    Assertions.assertThat(kSession.getObject(william)).isNotNull();
    Assertions.assertThat(((Person) kSession.getObject(elizabeth)).getAddress()).isEqualTo(cottageInMountains);
    Assertions.assertThat(((Person) kSession.getObject(william)).getAddress().getCity()).isEqualTo("Brno");
    Assertions.assertThat(kSession.getObject(john)).isNotNull();
    kSession.dispose();
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Example 15 with Person

use of org.drools.testcoverage.common.model.Person in project drools by kiegroup.

the class LiveQueriesBadResultTest method testOfBadParameters.

@Ignore("TODO - check correct exception in this test when DROOLS-2187 is fixed.")
@Test
public void testOfBadParameters() {
    ViewChangedEventListener listener = new ViewChangedEventListener() {

        @Override
        public void rowUpdated(Row row) {
            updated.add(row.get("person"));
        }

        @Override
        public void rowInserted(Row row) {
            inserted.add(row.get("person"));
        }

        @Override
        public void rowDeleted(Row row) {
            deleted.add(row.get("person"));
        }
    };
    final KieBase kieBase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "query.drl");
    KieSession ksession = kieBase.newKieSession();
    ksession.insert(new Person("Petr", 25));
    ksession.openLiveQuery("queryWithParamWithoutType", (Object[]) null, listener);
}
Also used : ViewChangedEventListener(org.kie.api.runtime.rule.ViewChangedEventListener) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Row(org.kie.api.runtime.rule.Row) Person(org.drools.testcoverage.common.model.Person) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

Person (org.drools.testcoverage.common.model.Person)22 Test (org.junit.Test)17 KieBase (org.kie.api.KieBase)11 KieSession (org.kie.api.runtime.KieSession)11 FactHandle (org.kie.api.runtime.rule.FactHandle)5 ArrayList (java.util.ArrayList)4 Address (org.drools.testcoverage.common.model.Address)4 Resource (org.kie.api.io.Resource)4 KieSessionTest (org.drools.testcoverage.common.KieSessionTest)3 Ignore (org.junit.Ignore)3 Command (org.kie.api.command.Command)3 Row (org.kie.api.runtime.rule.Row)3 ViewChangedEventListener (org.kie.api.runtime.rule.ViewChangedEventListener)3 TrackingAgendaEventListener (org.drools.testcoverage.common.listener.TrackingAgendaEventListener)2 Cheese (org.drools.testcoverage.common.model.Cheese)2 InternationalAddress (org.drools.testcoverage.common.model.InternationalAddress)2 FactType (org.kie.api.definition.type.FactType)2 IOException (java.io.IOException)1 StringReader (java.io.StringReader)1 ExternalSpreadsheetCompiler (org.drools.decisiontable.ExternalSpreadsheetCompiler)1