use of org.hisp.dhis.rules.models.Rule in project dhis2-android-sdk by dhis2.
the class RuleEngineValueTypesShould method fallback_to_default_numeric_value_on_numeric_variable_without_value.
@Test
public void fallback_to_default_numeric_value_on_numeric_variable_without_value() throws Exception {
RuleAction ruleAction = RuleActionDisplayKeyValuePair.createForFeedback("test_action_content", "#{test_variable}");
Rule rule = Rule.create(null, null, "true", Arrays.asList(ruleAction));
RuleVariable ruleVariable = RuleVariableCurrentEvent.create("test_variable", "test_data_element", RuleValueType.NUMERIC);
RuleEngine ruleEngine = RuleEngineContext.builder(new DuktapeEvaluator(duktape)).rules(Arrays.asList(rule)).ruleVariables(Arrays.asList(ruleVariable)).build().toEngineBuilder().build();
RuleEvent ruleEvent = RuleEvent.create("test_event", "test_program_stage", RuleEvent.Status.ACTIVE, new Date(), new Date(), new ArrayList<RuleDataValue>());
List<RuleEffect> ruleEffects = ruleEngine.evaluate(ruleEvent).call();
assertThat(ruleEffects.size()).isEqualTo(1);
assertThat(ruleEffects.get(0).data()).isEqualTo("0.0");
assertThat(ruleEffects.get(0).ruleAction()).isEqualTo(ruleAction);
}
use of org.hisp.dhis.rules.models.Rule in project dhis2-android-sdk by dhis2.
the class RuleEngineValueTypesShould method fallback_to_default_text_value_on_variable_without_value.
@Test
public void fallback_to_default_text_value_on_variable_without_value() throws Exception {
RuleAction ruleAction = RuleActionDisplayKeyValuePair.createForFeedback("test_action_content", "#{test_variable}");
Rule rule = Rule.create(null, null, "true", Arrays.asList(ruleAction));
RuleVariable ruleVariable = RuleVariableCurrentEvent.create("test_variable", "test_data_element", RuleValueType.TEXT);
RuleEngine ruleEngine = RuleEngineContext.builder(new DuktapeEvaluator(duktape)).rules(Arrays.asList(rule)).ruleVariables(Arrays.asList(ruleVariable)).build().toEngineBuilder().build();
RuleEvent ruleEvent = RuleEvent.create("test_event", "test_program_stage", RuleEvent.Status.ACTIVE, new Date(), new Date(), new ArrayList<RuleDataValue>());
List<RuleEffect> ruleEffects = ruleEngine.evaluate(ruleEvent).call();
assertThat(ruleEffects.size()).isEqualTo(1);
assertThat(ruleEffects.get(0).data()).isEqualTo("");
assertThat(ruleEffects.get(0).ruleAction()).isEqualTo(ruleAction);
}
use of org.hisp.dhis.rules.models.Rule in project dhis2-android-sdk by dhis2.
the class RuleEngineContextShould method thrown_unsupported_operation_exception_when_edit_immutable_copy_of_rules_in_builder.
@Test
public void thrown_unsupported_operation_exception_when_edit_immutable_copy_of_rules_in_builder() {
RuleVariable ruleVariableOne = mock(RuleVariable.class);
RuleVariable ruleVariableTwo = mock(RuleVariable.class);
Rule ruleOne = mock(Rule.class);
Rule ruleTwo = mock(Rule.class);
List<RuleVariable> ruleVariables = new ArrayList<>();
List<Rule> rules = new ArrayList<>();
ruleVariables.add(ruleVariableOne);
rules.add(ruleOne);
RuleEngineContext ruleEngineContext = RuleEngineContext.builder(ruleExpressionEvaluator).ruleVariables(ruleVariables).rules(rules).build();
ruleVariables.add(ruleVariableTwo);
rules.add(ruleTwo);
assertThat(ruleEngineContext.expressionEvaluator()).isEqualTo(ruleExpressionEvaluator);
assertThat(ruleEngineContext.ruleVariables().size()).isEqualTo(1);
assertThat(ruleEngineContext.ruleVariables().get(0)).isEqualTo(ruleVariableOne);
assertThat(ruleEngineContext.rules().size()).isEqualTo(1);
assertThat(ruleEngineContext.rules().get(0)).isEqualTo(ruleOne);
try {
ruleEngineContext.ruleVariables().clear();
fail("UnsupportedOperationException was expected, but nothing was thrown.");
} catch (UnsupportedOperationException unsupportedOperationException) {
// noop
}
try {
ruleEngineContext.rules().clear();
fail("UnsupportedOperationException was expected, but nothing was thrown.");
} catch (UnsupportedOperationException unsupportedOperationException) {
// noop
}
}
use of org.hisp.dhis.rules.models.Rule in project dhis2-android-sdk by dhis2.
the class RuleEngineEffectTypesShould method return_hide_field_effect_after_create_simple_condition.
@Test
public void return_hide_field_effect_after_create_simple_condition() throws Exception {
RuleAction ruleAction = RuleActionHideField.create("test_action_content", "test_data_element");
Rule rule = Rule.create(null, null, "true", Arrays.asList(ruleAction));
RuleEngine ruleEngine = RuleEngineContext.builder(new DuktapeEvaluator(duktape)).rules(Arrays.asList(rule)).build().toEngineBuilder().build();
RuleEvent ruleEvent = RuleEvent.create("test_event", "test_program_stage", RuleEvent.Status.ACTIVE, new Date(), new Date(), Arrays.asList(RuleDataValue.create(new Date(), "test_program_stage", "test_data_element", "test_value")));
List<RuleEffect> ruleEffects = ruleEngine.evaluate(ruleEvent).call();
assertThat(ruleEffects.size()).isEqualTo(1);
assertThat(ruleEffects.get(0).data()).isEqualTo("");
assertThat(ruleEffects.get(0).ruleAction()).isEqualTo(ruleAction);
}
use of org.hisp.dhis.rules.models.Rule in project dhis2-android-sdk by dhis2.
the class RuleEngineEffectTypesShould method return_assigned_effect_when_create_simple_event.
@Test
public void return_assigned_effect_when_create_simple_event() throws Exception {
RuleAction ruleAction = RuleActionCreateEvent.create("test_action_content", "'event_uid;test_data_value_one'", "test_program_stage");
Rule rule = Rule.create(null, null, "true", Arrays.asList(ruleAction));
RuleEngine ruleEngine = RuleEngineContext.builder(new DuktapeEvaluator(duktape)).rules(Arrays.asList(rule)).build().toEngineBuilder().build();
RuleEvent ruleEvent = RuleEvent.create("test_event", "test_program_stage", RuleEvent.Status.ACTIVE, new Date(), new Date(), Arrays.asList(RuleDataValue.create(new Date(), "test_program_stage", "test_data_element", "test_value")));
List<RuleEffect> ruleEffects = ruleEngine.evaluate(ruleEvent).call();
assertThat(ruleEffects.size()).isEqualTo(1);
assertThat(ruleEffects.get(0).data()).isEqualTo("event_uid;test_data_value_one");
assertThat(ruleEffects.get(0).ruleAction()).isEqualTo(ruleAction);
}
Aggregations