let reader read MVEL rules from String

pull/144/head
Paul Brejla 7 years ago committed by Mahmoud Ben Hassine
parent 686a3857cb
commit f066f86c1a

@ -42,6 +42,12 @@ class MVELRuleDefinitionReader {
return createRuleDefinitionFrom(map);
}
MVELRuleDefinition read(String descriptor) throws NullPointerException {
Object object = yaml.load(descriptor);
Map<String, Object> map = (Map<String, Object>) object;
return createRuleDefinitionFrom(map);
}
private static MVELRuleDefinition createRuleDefinitionFrom(Map<String, Object> map) {
MVELRuleDefinition ruleDefinition = new MVELRuleDefinition();
ruleDefinition.setName((String) map.get("name"));

@ -26,6 +26,8 @@ package org.jeasy.rules.mvel;
import org.junit.Test;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
@ -51,4 +53,22 @@ public class MVELRuleDefinitionReaderTest {
assertThat(adultRuleDefinition.getActions()).isEqualTo(Collections.singletonList("person.setAdult(true);"));
}
@Test
public void testRuleDefinitionReadingFromString() throws Exception {
// given
String adultRuleDescriptor = new String(Files.readAllBytes(Paths.get("src/test/resources/adult-rule.yml")));
// when
MVELRuleDefinition adultRuleDefinition = ruleDefinitionReader.read(adultRuleDescriptor);
// then
assertThat(adultRuleDefinition).isNotNull();
assertThat(adultRuleDefinition.getName()).isEqualTo("adult rule");
assertThat(adultRuleDefinition.getDescription()).isEqualTo("when age is greater then 18, then mark as adult");
assertThat(adultRuleDefinition.getPriority()).isEqualTo(1);
assertThat(adultRuleDefinition.getCondition()).isEqualTo("person.age > 18");
assertThat(adultRuleDefinition.getActions()).isEqualTo(Collections.singletonList("person.setAdult(true);"));
}
}
Loading…
Cancel
Save