Skip to content

Commit

Permalink
Migrating to JUnit5. Using good use of parametrized tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pibizza committed Sep 9, 2024
1 parent 323b89c commit 28a3a03
Show file tree
Hide file tree
Showing 8 changed files with 128 additions and 253 deletions.
10 changes: 5 additions & 5 deletions drools-drlonyaml-parent/drools-drlonyaml-cli-tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.drools</groupId>
Expand All @@ -34,13 +34,13 @@

<dependencies>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

import java.io.InputStream;

import org.junit.Test;
import org.junit.jupiter.api.Test;

public class ConversionsUsingCliTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,72 +18,26 @@
*/
package org.drools.drlonyaml.integration.tests;

import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

import org.drools.drl.ast.descr.PackageDescr;
import org.drools.drl.parser.DrlParser;
import org.drools.drlonyaml.model.DrlPackage;
import org.drools.model.codegen.ExecutableModelProject;
import org.junit.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.kie.api.runtime.KieSession;
import org.kie.internal.utils.KieHelper;

import static org.assertj.core.api.Assertions.assertThat;
import static org.drools.drlonyaml.model.Utils.getYamlMapper;

public class ProgrammaticProjectTest {

@Test
public void testDrl() {
KieSession ksession = new KieHelper()
.addContent(getDrlRule(), "org/drools/drlonyaml/integration/tests/rule.drl")
.build(ExecutableModelProject.class)
.newKieSession();

checkKieSession(ksession);
}

@Test
public void testYaml() {
KieSession ksession = new KieHelper()
.addContent(getYamlRule(), "org/drools/drlonyaml/integration/tests/rule.drl.yaml")
.build(ExecutableModelProject.class)
.newKieSession();

checkKieSession(ksession);
}

private static void checkKieSession(KieSession ksession) {
List<String> result = new ArrayList<>();
ksession.setGlobal("result", result);

ksession.insert(new Message("test"));
ksession.insert(new Message("Hello World"));
ksession.insert(10);
ksession.insert(11);

int count = ksession.fireAllRules();
assertThat(count).isEqualTo(1);
assertThat(result).hasSize(1);
assertThat(result.get(0)).isEqualTo("Hello World");
}

private String drl2yaml(String drl) {
try (StringWriter writer = new StringWriter()) {
PackageDescr pkgDescr = new DrlParser().parse(new StringReader(drl));
DrlPackage model = DrlPackage.from(pkgDescr);
getYamlMapper().writeValue(writer, model);
return writer.toString();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

private String getDrlRule() {
return """
private static Stream<Arguments> params() {
return Stream.of(
Arguments.of("org/drools/drlonyaml/integration/tests/rule.drl",
"""
package org.drools.drlonyaml.integration.tests
global java.util.List result;
Expand All @@ -93,25 +47,49 @@ private String getDrlRule() {
$m : Message( size == $i )
then
result.add( $m.getText() );
end""";
end"""),

Arguments.of("org/drools/drlonyaml/integration/tests/rule.drl.yaml",
"""
name: org.drools.drlonyaml.integration.tests
globals:
- type: java.util.List
id: result
rules:
- name: R
when:
- given: Integer
as: $i
- given: Message
as: $m
having:
- size == $i
then: |
result.add( $m.getText() );""")
);
}

@ParameterizedTest
@MethodSource("params")
public void test1(String name, String content) {
KieSession ksession = new KieHelper()
.addContent(content, name)
.build(ExecutableModelProject.class)
.newKieSession();

private String getYamlRule() {
return """
name: org.drools.drlonyaml.integration.tests
globals:
- type: java.util.List
id: result
rules:
- name: R
when:
- given: Integer
as: $i
- given: Message
as: $m
having:
- size == $i
then: |
result.add( $m.getText() );""";
List<String> result = new ArrayList<>();
ksession.setGlobal("result", result);

ksession.insert(new Message("test"));
ksession.insert(new Message("Hello World"));
ksession.insert(10);
ksession.insert(11);

int count = ksession.fireAllRules();
assertThat(count).isEqualTo(1);
assertThat(result).hasSize(1);
assertThat(result.get(0)).isEqualTo("Hello World");
}


}
6 changes: 3 additions & 3 deletions drools-drlonyaml-parent/drools-drlonyaml-model/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.drools</groupId>
Expand Down Expand Up @@ -48,8 +48,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.Feature;
import org.assertj.core.api.Assertions;
import org.drools.drl.ast.descr.PackageDescr;
import org.drools.drl.parser.DrlParser;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -45,91 +46,40 @@ public class SmokeTest {
YAMLFactory yamlFactory = YAMLFactory.builder().enable(Feature.MINIMIZE_QUOTES).build();
mapper = new ObjectMapper(yamlFactory);
}

private void assertDrlToYamlAndBack(String filename) {
try {
String content = Files.readString(Paths.get(this.getClass().getResource(filename).toURI()));
assertThat(content).as("Failed to read test resource").isNotNull();

PackageDescr pkgDescr = drlParser.parse(new StringReader(content));
assertThat(pkgDescr).as("Failed to parse DRL as a PackageDescr").isNotNull();

DrlPackage model = DrlPackage.from(pkgDescr);
assertThat(model).as("Failed to generate from a PackageDescr a valid model").isNotNull();

StringWriter writer = new StringWriter();
mapper.writeValue(writer, model);
final String yaml = writer.toString();
writer.close();
LOG.debug("{}", yaml);
assertThat(yaml).as("resulting YAML shall not be null nor empty").isNotNull().isNotEmpty();

final DrlPackage deserPackage = mapper.readValue(yaml, DrlPackage.class);
assertThat(deserPackage).usingRecursiveComparison().isEqualTo(model);
} catch (Exception e) {
Assertions.fail("Failed to roundtrip from DRL to YAML and back to YAML", e);
}
}

@Test
public void smokeTestFromDRL1() {
String filename = "/smoketests/smoke1.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL2() {
String filename = "/smoketests/smoke2.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL3() {
String filename = "/smoketests/smoke3.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL4() {
String filename = "/smoketests/smoke4.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL5() {
String filename = "/smoketests/smoke5.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL6() {
String filename = "/smoketests/smoke6.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL7() {
String filename = "/smoketests/smoke7.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL8() {
String filename = "/smoketests/smoke8.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromDRL9() {
String filename = "/smoketests/smoke9.drl.txt";
assertDrlToYamlAndBack(filename);
@ParameterizedTest
@ValueSource(strings = {"/smoketests/smoke1.drl.txt",
"/smoketests/smoke2.drl.txt",
"/smoketests/smoke3.drl.txt",
"/smoketests/smoke4.drl.txt",
"/smoketests/smoke5.drl.txt",
"/smoketests/smoke6.drl.txt",
"/smoketests/smoke7.drl.txt",
"/smoketests/smoke8.drl.txt",
"/smoketests/smoke9.drl.txt",
"/smoketests/smoke10.drl.txt",
"/smoketests/ruleunit.drl.txt"})
public void smokeTestFromDrl(String filename ) throws Exception {
String content = Files.readString(Paths.get(this.getClass().getResource(filename).toURI()));
assertThat(content).as("Failed to read test resource").isNotNull();

PackageDescr pkgDescr = drlParser.parse(new StringReader(content));
assertThat(pkgDescr).as("Failed to parse DRL as a PackageDescr").isNotNull();

DrlPackage model = DrlPackage.from(pkgDescr);
assertThat(model).as("Failed to generate from a PackageDescr a valid model").isNotNull();

StringWriter writer = new StringWriter();
mapper.writeValue(writer, model);
final String yaml = writer.toString();
writer.close();
LOG.debug("{}", yaml);
assertThat(yaml).as("resulting YAML shall not be null nor empty").isNotNull().isNotEmpty();

final DrlPackage deserPackage = mapper.readValue(yaml, DrlPackage.class);
assertThat(deserPackage).usingRecursiveComparison().isEqualTo(model);
}

@Test
public void smokeTestFromDRL10() {
String filename = "/smoketests/smoke10.drl.txt";
assertDrlToYamlAndBack(filename);
}

@Test
public void smokeTestFromYAML1() throws Exception {
Expand All @@ -138,17 +88,11 @@ public void smokeTestFromYAML1() throws Exception {
LOG.debug("{}", result);
}

@Ignore("additional RHS types not supported at the moment.")
@Disabled("additional RHS types not supported at the moment.")
@Test
public void smokeTestFromYAML2() throws Exception {
String content = Files.readString(Paths.get(this.getClass().getResource("/smoketests/yamlfirst_smoke2.yml").toURI()));
DrlPackage result = mapper.readValue(content, DrlPackage.class);
LOG.debug("{}", result);
}

@Test
public void smokeTestWithRuleUnit() {
String filename = "/smoketests/ruleunit.drl.txt";
assertDrlToYamlAndBack(filename);
}
}
6 changes: 3 additions & 3 deletions drools-drlonyaml-parent/drools-drlonyaml-todrl/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.drools</groupId>
Expand Down Expand Up @@ -51,8 +51,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Loading

0 comments on commit 28a3a03

Please sign in to comment.