Search in sources :

Example 21 with RuleEvent

use of org.hisp.dhis.rules.models.RuleEvent in project dhis2-android-sdk by dhis2.

the class RuleVariableValueMapBuilderShould method contain_value_of_newest_rule_event.

@Test
public void contain_value_of_newest_rule_event() throws ParseException {
    RuleVariable ruleVariableOne = RuleVariableNewestEvent.create("test_variable_one", "test_dataelement_one", RuleValueType.TEXT);
    RuleVariable ruleVariableTwo = RuleVariableNewestEvent.create("test_variable_two", "test_dataelement_two", RuleValueType.TEXT);
    Date oldestEventDate = dateFormat.parse("2013-01-01");
    Date newestEventDate = dateFormat.parse("2017-01-01");
    Date currentEventDate = dateFormat.parse("2015-01-01");
    Date currentEventDueDate = dateFormat.parse("2016-01-01");
    RuleEvent oldestRuleEvent = RuleEvent.create("test_event_uid_oldest", "test_program_stage", RuleEvent.Status.ACTIVE, oldestEventDate, oldestEventDate, Arrays.asList(RuleDataValue.create(oldestEventDate, "test_program_stage", "test_dataelement_one", "test_value_one_oldest"), RuleDataValue.create(oldestEventDate, "test_program_stage", "test_dataelement_two", "test_value_two_oldest")));
    RuleEvent newestRuleEvent = RuleEvent.create("test_event_uid_newest", "test_program_stage", RuleEvent.Status.ACTIVE, newestEventDate, newestEventDate, Arrays.asList(RuleDataValue.create(newestEventDate, "test_program_stage", "test_dataelement_one", "test_value_one_newest"), RuleDataValue.create(newestEventDate, "test_program_stage", "test_dataelement_two", "test_value_two_newest")));
    RuleEvent currentEvent = RuleEvent.create("test_event_uid_current", "test_program_stage", RuleEvent.Status.ACTIVE, currentEventDate, currentEventDueDate, Arrays.asList(RuleDataValue.create(currentEventDate, "test_program_stage", "test_dataelement_one", "test_value_one_current"), RuleDataValue.create(currentEventDate, "test_program_stage", "test_dataelement_two", "test_value_two_current")));
    Map<String, RuleVariableValue> valueMap = RuleVariableValueMapBuilder.target(currentEvent).ruleVariables(Arrays.asList(ruleVariableOne, ruleVariableTwo)).ruleEvents(Arrays.asList(oldestRuleEvent, newestRuleEvent)).build();
    assertThat(valueMap.size()).isEqualTo(7);
    assertThatVariable(valueMap.get("current_date")).hasValue(wrap(dateFormat.format(new Date()))).isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat.format(new Date()));
    assertThatVariable(valueMap.get("event_date")).hasValue(wrap(dateFormat.format(currentEventDate))).isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat.format(currentEventDate));
    assertThatVariable(valueMap.get("event_count")).hasValue("3").isTypeOf(RuleValueType.NUMERIC).hasCandidates("3");
    assertThatVariable(valueMap.get("event_id")).hasValue("'test_event_uid_current'").isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid_current");
    assertThatVariable(valueMap.get("due_date")).hasValue(wrap(dateFormat.format(currentEventDueDate))).isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat.format(currentEventDueDate));
    assertThatVariable(valueMap.get("test_variable_one")).hasValue("'test_value_one_newest'").isTypeOf(RuleValueType.TEXT).hasCandidates("test_value_one_newest", "test_value_one_current", "test_value_one_oldest");
    assertThatVariable(valueMap.get("test_variable_two")).hasValue("'test_value_two_newest'").isTypeOf(RuleValueType.TEXT).hasCandidates("test_value_two_newest", "test_value_two_current", "test_value_two_oldest");
}
Also used : RuleEvent(org.hisp.dhis.rules.models.RuleEvent) Date(java.util.Date) RuleVariable(org.hisp.dhis.rules.models.RuleVariable) Test(org.junit.Test)

Example 22 with RuleEvent

use of org.hisp.dhis.rules.models.RuleEvent 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);
}
Also used : RuleEngine(org.hisp.dhis.rules.RuleEngine) RuleEffect(org.hisp.dhis.rules.models.RuleEffect) RuleAction(org.hisp.dhis.rules.models.RuleAction) Rule(org.hisp.dhis.rules.models.Rule) RuleEvent(org.hisp.dhis.rules.models.RuleEvent) Date(java.util.Date) Test(org.junit.Test)

Example 23 with RuleEvent

use of org.hisp.dhis.rules.models.RuleEvent 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);
}
Also used : RuleEngine(org.hisp.dhis.rules.RuleEngine) RuleEffect(org.hisp.dhis.rules.models.RuleEffect) RuleAction(org.hisp.dhis.rules.models.RuleAction) Rule(org.hisp.dhis.rules.models.Rule) RuleEvent(org.hisp.dhis.rules.models.RuleEvent) Date(java.util.Date) Test(org.junit.Test)

Example 24 with RuleEvent

use of org.hisp.dhis.rules.models.RuleEvent in project dhis2-android-sdk by dhis2.

the class RuleEngineEffectTypesShould method return_on_error_effect_after_create_simple_condition.

@Test
public void return_on_error_effect_after_create_simple_condition() throws Exception {
    RuleAction ruleAction = RuleActionShowError.create("test_error_message", "2 + 2", "target_field");
    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("4.0");
    assertThat(ruleEffects.get(0).ruleAction()).isEqualTo(ruleAction);
}
Also used : RuleEngine(org.hisp.dhis.rules.RuleEngine) RuleEffect(org.hisp.dhis.rules.models.RuleEffect) RuleAction(org.hisp.dhis.rules.models.RuleAction) Rule(org.hisp.dhis.rules.models.Rule) RuleEvent(org.hisp.dhis.rules.models.RuleEvent) Date(java.util.Date) Test(org.junit.Test)

Example 25 with RuleEvent

use of org.hisp.dhis.rules.models.RuleEvent in project dhis2-android-sdk by dhis2.

the class RuleEngineEffectTypesShould method return_error_effect_after_create_simple_condition.

@Test
public void return_error_effect_after_create_simple_condition() throws Exception {
    RuleAction ruleAction = RuleActionErrorOnCompletion.create("test_action_content", "2 + 2", "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("4.0");
    assertThat(ruleEffects.get(0).ruleAction()).isEqualTo(ruleAction);
}
Also used : RuleEngine(org.hisp.dhis.rules.RuleEngine) RuleEffect(org.hisp.dhis.rules.models.RuleEffect) RuleAction(org.hisp.dhis.rules.models.RuleAction) Rule(org.hisp.dhis.rules.models.Rule) RuleEvent(org.hisp.dhis.rules.models.RuleEvent) Date(java.util.Date) Test(org.junit.Test)

Aggregations

RuleEvent (org.hisp.dhis.rules.models.RuleEvent)34 Test (org.junit.Test)31 Date (java.util.Date)28 RuleEngine (org.hisp.dhis.rules.RuleEngine)18 Rule (org.hisp.dhis.rules.models.Rule)18 RuleAction (org.hisp.dhis.rules.models.RuleAction)18 RuleEffect (org.hisp.dhis.rules.models.RuleEffect)18 RuleVariable (org.hisp.dhis.rules.models.RuleVariable)17 RuleDataValue (org.hisp.dhis.rules.models.RuleDataValue)10 ArrayList (java.util.ArrayList)3 DhisConvenienceTest (org.hisp.dhis.DhisConvenienceTest)2 RuleEnrollment (org.hisp.dhis.rules.models.RuleEnrollment)2 Test (org.junit.jupiter.api.Test)2