Search in sources :

Example 1 with Person

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

the class LiveQueriesBadResultTest method testAccessToNotExistingVariable.

@Test
public void testAccessToNotExistingVariable() {
    ViewChangedEventListener listener = new ViewChangedEventListener() {

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

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

        @Override
        public void rowDeleted(Row row) {
            deleted.add(row.get("bad"));
        }
    };
    final KieBase kieBase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "query.drl");
    KieSession ksession = kieBase.newKieSession();
    ksession.insert(new Person("Petr", 25));
    Assertions.assertThatThrownBy(() -> ksession.openLiveQuery("simple query with no parameters", new Object[] { "Petr", 26 }, listener)).isInstanceOf(RuntimeException.class).hasMessage("The identifier 'bad' does not exist as a bound variable for this query");
}
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) Test(org.junit.Test)

Example 2 with Person

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

the class RuleTemplateTest method testSampleCheese.

@Test
public void testSampleCheese() {
    // first we compile the decision table into a whole lot of rules.
    final ExternalSpreadsheetCompiler converter = new ExternalSpreadsheetCompiler();
    final KieServices kieServices = KieServices.Factory.get();
    final Resource table = kieServices.getResources().newClassPathResource("sample_cheese.xls", getClass());
    final Resource template = kieServices.getResources().newClassPathResource("sample_cheese.drt", getClass());
    String drl = null;
    try {
        // the data we are interested in starts at row 2, column 2 (i.e. B2)
        drl = converter.compile(table.getInputStream(), template.getInputStream(), 2, 2);
    } catch (IOException e) {
        throw new IllegalArgumentException("Could not read spreadsheet or rules stream.", e);
    }
    // compile the drl
    final Resource drlResource = kieServices.getResources().newReaderResource(new StringReader(drl));
    drlResource.setTargetPath(TestConstants.DRL_TEST_TARGET_PATH);
    final KieBase kbase = KieBaseUtil.getKieBaseFromResources(kieBaseTestConfiguration, drlResource);
    final Collection<KiePackage> pkgs = kbase.getKiePackages();
    Assertions.assertThat(pkgs.size()).isEqualTo(2);
    final ArrayList<String> names = new ArrayList<String>();
    for (KiePackage kp : pkgs) {
        names.add(kp.getName());
    }
    Assertions.assertThat(names.contains(TestConstants.PACKAGE_FUNCTIONAL)).isTrue();
    Assertions.assertThat(names.contains(TestConstants.PACKAGE_TESTCOVERAGE_MODEL)).isTrue();
    final KiePackage kiePackage = (KiePackage) pkgs.toArray()[names.indexOf(TestConstants.PACKAGE_FUNCTIONAL)];
    Assertions.assertThat(kiePackage.getRules().size()).isEqualTo(2);
    final KieSession ksession = kbase.newKieSession();
    ksession.insert(new Cheese("stilton", 42));
    ksession.insert(new Person("michael", "stilton", 42));
    final List<String> list = new ArrayList<String>();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    LOGGER.debug(list.toString());
    ksession.dispose();
}
Also used : ExternalSpreadsheetCompiler(org.drools.decisiontable.ExternalSpreadsheetCompiler) Resource(org.kie.api.io.Resource) ArrayList(java.util.ArrayList) KieServices(org.kie.api.KieServices) Cheese(org.drools.testcoverage.common.model.Cheese) IOException(java.io.IOException) KiePackage(org.kie.api.definition.KiePackage) KieBase(org.kie.api.KieBase) StringReader(java.io.StringReader) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Example 3 with Person

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

the class OOPathDslTest method dslWithOOPathAndSpecialChars.

/**
 * Shows it's possible to use OOPath including some characters that are significant for both DSL and OOPath.
 */
@Test
public void dslWithOOPathAndSpecialChars() {
    final String dsl = "[when]Person comes from \"{state}\"=person : " + "Person( /address#InternationalAddress[ state == \"{state}\" ] )\n";
    final String drl = "package P\n" + "\n" + "import org.drools.testcoverage.common.model.InternationalAddress\n" + "import org.drools.testcoverage.common.model.Person\n" + "\n" + "rule R\n" + "when\n" + "    Person comes from \"Peaceful State\"\n" + "then\n" + "end";
    KieSession kieSession = new KieHelper().addContent(dsl, ResourceType.DSL).addContent(drl, ResourceType.DSLR).build().newKieSession();
    final Person person = new Person("Bruno", 21);
    person.setAddress(new InternationalAddress("Some Street", 10, "Beautiful City", "Peaceful State"));
    kieSession.insert(person);
    assertThat(kieSession.fireAllRules()).isEqualTo(1);
}
Also used : InternationalAddress(org.drools.testcoverage.common.model.InternationalAddress) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Example 4 with Person

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

the class OOPathSmokeTest method testFireRule.

@Test
public void testFireRule() {
    final KieBase kieBase = KieBaseUtil.getKieBaseFromClasspathResources(this.getClass(), kieBaseTestConfiguration, "oopath.drl");
    this.kieSession = kieBase.newKieSession();
    final Person person = new Person("Bruno", 21);
    person.setAddress(new Address("Some Street", 10, "Beautiful City"));
    this.kieSession.insert(person);
    Assertions.assertThat(this.kieSession.fireAllRules()).isEqualTo(1);
}
Also used : Address(org.drools.testcoverage.common.model.Address) KieBase(org.kie.api.KieBase) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Example 5 with Person

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

the class DecisionTableTest method testMultipleTableXLS.

@Test
public void testMultipleTableXLS() {
    final Resource decisionTable = ResourceUtil.getDecisionTableResourceFromClasspath("multiple_tables.xls", getClass(), DecisionTableInputType.XLS);
    final KieBase kbase = KieBaseUtil.getKieBaseFromResources(kieBaseTestConfiguration, decisionTable);
    Assertions.assertThat(2).isEqualTo(kbase.getKiePackages().size());
    final KieSession session = kbase.newKieSession();
    // testing person object from the first table
    final Person person = new Person("Paul");
    person.setId(1);
    Assertions.assertThat(person.getName()).isEqualTo("Paul");
    Assertions.assertThat(person.getId()).isEqualTo(1);
    // testing second person, he should be renamed by rules in the second
    // table
    final Person person2 = new Person("Helmut von Seireit");
    person2.setId(1000);
    Assertions.assertThat(person2.getName()).isEqualTo("Helmut von Seireit");
    Assertions.assertThat(person2.getId()).isEqualTo(1000);
    session.insert(person);
    session.insert(person2);
    session.fireAllRules();
    Assertions.assertThat(person.getName()).isEqualTo("Paul");
    Assertions.assertThat(person.getId()).isEqualTo(2);
    Assertions.assertThat(person2.getName()).isEqualTo("Wilhelm von Seireit");
    Assertions.assertThat(person2.getId()).isEqualTo(1000);
    session.dispose();
}
Also used : KieBase(org.kie.api.KieBase) Resource(org.kie.api.io.Resource) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) 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