From 7c2e7aac203e7b343aac1e8536d27fa9d69985fb Mon Sep 17 00:00:00 2001 From: Enrico Date: Wed, 6 Dec 2023 17:26:04 +0100 Subject: [PATCH] refactor RuleEvent to kotlin --- .../rules/RuleVariableValueMapBuilder.java | 2 +- .../org/hisp/dhis/rules/models/RuleEvent.java | 127 --- .../org/hisp/dhis/rules/models/RuleEvent.kt | 71 ++ .../org/hisp/dhis/rules/ConstantsValueTest.kt | 28 +- .../dhis/rules/ProgramRuleVariableTest.kt | 50 +- .../hisp/dhis/rules/RuleEngineContextTest.kt | 38 +- .../dhis/rules/RuleEngineEffectTypesTest.kt | 46 +- .../hisp/dhis/rules/RuleEngineFunctionTest.kt | 749 ++++++++------- .../rules/RuleEngineGetDescriptionTest.kt | 115 ++- .../org/hisp/dhis/rules/RuleEngineTest.kt | 8 +- .../dhis/rules/RuleEngineValueTypesTest.kt | 26 +- .../dhis/rules/RuleEngineVariableNameTest.kt | 306 +++---- .../RuleVariableValueMapBuilderTest.java | 779 ---------------- .../rules/RuleVariableValueMapBuilderTest.kt | 851 ++++++++++++++++++ .../hisp/dhis/rules/VariableValueTypeTest.kt | 20 +- .../dhis/rules/models/CalculatedValueTest.kt | 70 +- .../hisp/dhis/rules/models/RuleEventTest.java | 91 -- .../hisp/dhis/rules/models/RuleEventTest.kt | 53 ++ 18 files changed, 1653 insertions(+), 1777 deletions(-) delete mode 100644 src/main/java/org/hisp/dhis/rules/models/RuleEvent.java create mode 100644 src/main/java/org/hisp/dhis/rules/models/RuleEvent.kt delete mode 100644 src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.java create mode 100644 src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.kt delete mode 100644 src/test/java/org/hisp/dhis/rules/models/RuleEventTest.java create mode 100644 src/test/java/org/hisp/dhis/rules/models/RuleEventTest.kt diff --git a/src/main/java/org/hisp/dhis/rules/RuleVariableValueMapBuilder.java b/src/main/java/org/hisp/dhis/rules/RuleVariableValueMapBuilder.java index 3c084379..50e1996e 100644 --- a/src/main/java/org/hisp/dhis/rules/RuleVariableValueMapBuilder.java +++ b/src/main/java/org/hisp/dhis/rules/RuleVariableValueMapBuilder.java @@ -239,7 +239,7 @@ private Map> buildAllEventValues() } // sort list of events by eventDate: - events.sort(RuleEvent.EVENT_DATE_COMPARATOR); + events.sort(RuleEvent.Companion.getEVENT_DATE_COMPARATOR()); // aggregating values by data element uid for ( int i = 0; i < events.size(); i++ ) diff --git a/src/main/java/org/hisp/dhis/rules/models/RuleEvent.java b/src/main/java/org/hisp/dhis/rules/models/RuleEvent.java deleted file mode 100644 index 00143b45..00000000 --- a/src/main/java/org/hisp/dhis/rules/models/RuleEvent.java +++ /dev/null @@ -1,127 +0,0 @@ -package org.hisp.dhis.rules.models; - -import javax.annotation.CheckForNull; -import javax.annotation.Nonnull; -import java.util.Comparator; -import java.util.Date; -import java.util.List; - -public record RuleEvent( - @Nonnull String event, - @Nonnull String programStage, - @Nonnull String programStageName, - @Nonnull Status status, - @Nonnull Date eventDate, - @CheckForNull Date dueDate, - @CheckForNull Date completedDate, - @Nonnull String organisationUnit, - @CheckForNull String organisationUnitCode, - @Nonnull List dataValues -) { - public static final Comparator EVENT_DATE_COMPARATOR = Comparator.comparing(RuleEvent::eventDate).reversed(); - - public static final RuleEvent MOCK = new RuleEvent(null, null, null, null, null, null, null, null, null, null); - - @Nonnull - public static RuleEvent create( - @Nonnull String event, - @Nonnull String programStage, - @Nonnull Status status, - @Nonnull Date eventDate, - @Nonnull Date dueDate, - @Nonnull String organisationUnit, - @CheckForNull String organisationUnitCode, - @Nonnull List ruleDataValues, - @Nonnull String programStageName, - @CheckForNull Date completedDate) { - return new Builder() - .event(event) - .programStage(programStage) - .programStageName(programStageName) - .status(status) - .eventDate(eventDate) - .dueDate(dueDate) - .organisationUnit(organisationUnit) - .organisationUnitCode(organisationUnitCode) - .completedDate(completedDate) - .dataValues(List.copyOf(ruleDataValues)) - .build(); - } - - public static Builder builder() { - return new Builder(); - } - - public enum Status { - ACTIVE, COMPLETED, SCHEDULE, SKIPPED, VISITED, OVERDUE - } - - @Deprecated // use data class copy/named assign once this is KMP - public static class Builder { - String event; - String programStage; - String programStageName; - Status status; - Date eventDate; - Date dueDate; - Date completedDate; - String organisationUnit; - String organisationUnitCode; - List dataValues; - - public Builder event(String event) { - this.event = event; - return this; - } - - public Builder programStage(String programStage) { - this.programStage = programStage; - return this; - } - - - public Builder programStageName(String programStageName) { - this.programStageName = programStageName; - return this; - } - - public Builder status(Status status) { - this.status = status; - return this; - } - - public Builder eventDate(Date eventDate) { - this.eventDate = eventDate; - return this; - } - - public Builder dueDate(Date dueDate) { - this.dueDate = dueDate; - return this; - } - - public Builder completedDate(Date completedDate) { - this.completedDate = completedDate; - return this; - } - - public Builder organisationUnit(String organisationUnit) { - this.organisationUnit = organisationUnit; - return this; - } - - public Builder organisationUnitCode(String organisationUnitCode) { - this.organisationUnitCode = organisationUnitCode; - return this; - } - - public Builder dataValues(List dataValues) { - this.dataValues = dataValues; - return this; - } - - public RuleEvent build() { - return new RuleEvent(event, programStage, programStageName, status, eventDate, dueDate, completedDate, organisationUnit, organisationUnitCode, dataValues); - } - } -} diff --git a/src/main/java/org/hisp/dhis/rules/models/RuleEvent.kt b/src/main/java/org/hisp/dhis/rules/models/RuleEvent.kt new file mode 100644 index 00000000..8d569829 --- /dev/null +++ b/src/main/java/org/hisp/dhis/rules/models/RuleEvent.kt @@ -0,0 +1,71 @@ +package org.hisp.dhis.rules.models + +import java.util.* +import java.util.Comparator.comparing +import kotlin.Comparator + +data class RuleEvent( + val event: String, + val programStage: String, + val programStageName: String, + val status: Status, + val eventDate: Date, + val dueDate: Date?, + val completedDate: Date?, + val organisationUnit: String, + val organisationUnitCode: String?, + val dataValues: List +) { + enum class Status { + ACTIVE, + COMPLETED, + SCHEDULE, + SKIPPED, + VISITED, + OVERDUE + } + + fun event(): String { + return event + } + + fun programStage(): String { + return programStage + } + + fun programStageName(): String { + return programStageName + } + + fun status(): Status { + return status + } + + fun eventDate(): Date { + return eventDate + } + + fun dueDate(): Date? { + return dueDate + } + + fun completedDate(): Date? { + return completedDate + } + + fun organisationUnit(): String { + return organisationUnit + } + + fun organisationUnitCode(): String? { + return organisationUnitCode + } + + fun dataValues(): List { + return dataValues + } + + companion object { + val EVENT_DATE_COMPARATOR: Comparator = Comparator.comparing{e: RuleEvent-> e.eventDate()}.reversed() + } +} diff --git a/src/test/java/org/hisp/dhis/rules/ConstantsValueTest.kt b/src/test/java/org/hisp/dhis/rules/ConstantsValueTest.kt index 8cd757a0..3ecbddf7 100644 --- a/src/test/java/org/hisp/dhis/rules/ConstantsValueTest.kt +++ b/src/test/java/org/hisp/dhis/rules/ConstantsValueTest.kt @@ -1,7 +1,6 @@ package org.hisp.dhis.rules import org.hisp.dhis.rules.models.* -import org.hisp.dhis.rules.util.MockRuleVariable import java.util.* import kotlin.test.Test import kotlin.test.assertEquals @@ -54,13 +53,12 @@ class ConstantsValueTest { .build() val ruleEngine = ruleEngineBuilder.build() val ruleEffects = ruleEngine.evaluate(enrollment).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("3.14", ruleEffects[0].data()) assertEquals(assignAction, ruleEffects[0].ruleAction()) } @Test - @Throws(Exception::class) fun assignValue() { val assignAction: RuleAction = RuleActionAssign.create(null, "4", "test_attribute") val action: RuleAction = @@ -83,7 +81,7 @@ class ConstantsValueTest { .build() val ruleEngine = ruleEngineBuilder.build() val ruleEffects = ruleEngine.evaluate(enrollment).call() - assertEquals(2, ruleEffects.size.toLong()) + assertEquals(2, ruleEffects.size) assertEquals("4", ruleEffects[0].data()) assertEquals(assignAction, ruleEffects[0].ruleAction()) assertEquals("4", ruleEffects[1].data()) @@ -91,7 +89,6 @@ class ConstantsValueTest { } @Test - @Throws(Exception::class) fun assignValueThroughVariable() { val assignAction: RuleAction = RuleActionAssign.create("#{test_attribute}", "4", null) val action: RuleAction = @@ -114,40 +111,29 @@ class ConstantsValueTest { .build() val ruleEngine = ruleEngineBuilder.build() val ruleEffects = ruleEngine.evaluate(enrollment).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data()) assertEquals(action, ruleEffects[0].ruleAction()) } @Test - @Throws(Exception::class) fun assignConstantValueFromAssignActionInEvent() { val assignAction: RuleAction = RuleActionAssign.create(null, "C{A1234567890}", "#{test_data_element}") val rule: Rule = Rule("true", java.util.List.of(assignAction), "test_program_rule1", "") val constantsValueMap: MutableMap = HashMap() constantsValueMap["A1234567890"] = "3.14" val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule), constantsValueMap) - val ruleEvent = RuleEvent.builder() - .event("test_event") - .programStage("test_program_stage") - .programStageName("") - .status(RuleEvent.Status.ACTIVE) - .eventDate(Date()) - .dueDate(Date()) - .organisationUnit("") - .organisationUnitCode("") - .completedDate(Date()) - .dataValues( - java.util.List.of( + val ruleEvent = RuleEvent(event ="test_event", programStage = "test_program_stage", programStageName = "", + status = RuleEvent.Status.ACTIVE, eventDate = Date(), dueDate = Date(), organisationUnit = "", organisationUnitCode = "", completedDate = Date(), dataValues = + listOf( RuleDataValue.create( Date(), "test_program_stage", "test_data_element", "test_value" ) ) ) - .build() val ruleEngine = ruleEngineBuilder.build() val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("3.14", ruleEffects[0].data()) assertEquals(assignAction, ruleEffects[0].ruleAction()) } diff --git a/src/test/java/org/hisp/dhis/rules/ProgramRuleVariableTest.kt b/src/test/java/org/hisp/dhis/rules/ProgramRuleVariableTest.kt index e9189808..61716e74 100644 --- a/src/test/java/org/hisp/dhis/rules/ProgramRuleVariableTest.kt +++ b/src/test/java/org/hisp/dhis/rules/ProgramRuleVariableTest.kt @@ -1,14 +1,12 @@ package org.hisp.dhis.rules import org.hisp.dhis.rules.models.* -import org.junit.Assert -import org.junit.Test -import org.junit.runner.RunWith -import org.junit.runners.JUnit4 import java.text.SimpleDateFormat import java.time.LocalDate import java.time.ZoneOffset import java.util.* +import kotlin.test.Test +import kotlin.test.assertEquals /* * Copyright (c) 2004-2018, University of Oslo @@ -37,10 +35,8 @@ import java.util.* * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -@RunWith(JUnit4::class) class ProgramRuleVariableTest { @Test - fun testCurrentDateProgramVariableIsAssigned() { val rule = getRule("V{current_date}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -48,7 +44,6 @@ class ProgramRuleVariableTest { } @Test - fun testDueDateProgramVariableIsAssigned() { val rule = getRule("V{due_date}") val ruleEffects = callEventRuleEngine(rule) @@ -56,7 +51,6 @@ class ProgramRuleVariableTest { } @Test - fun testEnrollmentCountProgramVariableIsAssigned() { val rule = getRule("V{enrollment_count}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -64,7 +58,6 @@ class ProgramRuleVariableTest { } @Test - fun testEnrollmentDateProgramVariableIsAssigned() { val rule = getRule("V{enrollment_date}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -72,7 +65,6 @@ class ProgramRuleVariableTest { } @Test - fun testEnrollmentIdProgramVariableIsAssigned() { val rule = getRule("V{enrollment_id}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -80,7 +72,6 @@ class ProgramRuleVariableTest { } @Test - fun testEnrollmentStatusProgramVariableIsAssigned() { val rule = getRule("V{enrollment_status}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -88,7 +79,6 @@ class ProgramRuleVariableTest { } @Test - fun testEnvironmentProgramVariableIsAssigned() { val rule = getRule("V{environment}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -96,7 +86,6 @@ class ProgramRuleVariableTest { } @Test - fun testEventCountProgramVariableIsAssigned() { val rule = getRule("V{event_count}") val ruleEffects = callEventRuleEngine(rule) @@ -104,7 +93,6 @@ class ProgramRuleVariableTest { } @Test - fun testEventDateProgramVariableIsAssigned() { val rule = getRule("V{event_date}") val ruleEffects = callEventRuleEngine(rule) @@ -112,7 +100,6 @@ class ProgramRuleVariableTest { } @Test - fun testEventIdProgramVariableIsAssigned() { val rule = getRule("V{event_id}") val ruleEffects = callEventRuleEngine(rule) @@ -120,7 +107,6 @@ class ProgramRuleVariableTest { } @Test - fun testEventStatusProgramVariableIsAssigned() { val rule = getRule("V{event_status}") val ruleEffects = callEventRuleEngine(rule) @@ -128,7 +114,6 @@ class ProgramRuleVariableTest { } @Test - fun testIncidentDateProgramVariableIsAssigned() { val rule = getRule("V{incident_date}") val ruleEffects = callEventRuleEngine(rule) @@ -136,7 +121,6 @@ class ProgramRuleVariableTest { } @Test - fun testOrganisationUnitProgramVariableIsAssigned() { val rule = getRule("V{org_unit}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -144,7 +128,6 @@ class ProgramRuleVariableTest { } @Test - fun testOrganisationUnitCodeProgramVariableIsAssigned() { val rule = getRule("V{orgunit_code}") val ruleEffects = callEventRuleEngine(rule) @@ -152,7 +135,6 @@ class ProgramRuleVariableTest { } @Test - fun testProgramNameProgramVariableIsAssigned() { val rule = getRule("V{program_name}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -160,7 +142,6 @@ class ProgramRuleVariableTest { } @Test - fun testProgramStageIdProgramVariableIsAssigned() { val rule = getRule("V{program_stage_id}") val ruleEffects = callEventRuleEngine(rule) @@ -168,7 +149,6 @@ class ProgramRuleVariableTest { } @Test - fun testProgramStageNameProgramVariableIsAssigned() { val rule = getRule("V{program_stage_name}") val ruleEffects = callEventRuleEngine(rule) @@ -176,7 +156,6 @@ class ProgramRuleVariableTest { } @Test - fun testTEICountProgramVariableIsAssigned() { val rule = getRule("V{tei_count}") val ruleEffects = callEnrollmentRuleEngine(rule) @@ -189,32 +168,25 @@ class ProgramRuleVariableTest { } private fun assertProgramRuleVariableAssignment(ruleEffects: List, rule: Rule, variableValue: String) { - Assert.assertEquals(1, ruleEffects.size.toLong()) - Assert.assertEquals(variableValue, ruleEffects[0].data()) - Assert.assertEquals(rule.actions()[0], ruleEffects[0].ruleAction()) + assertEquals(1, ruleEffects.size) + assertEquals(variableValue, ruleEffects[0].data()) + assertEquals(rule.actions()[0], ruleEffects[0].ruleAction()) } - private fun callEnrollmentRuleEngine(rule: Rule): List { val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule)) val ruleEngine = ruleEngineBuilder.build() return ruleEngine.evaluate(enrollment).call() } - private fun callEventRuleEngine(rule: Rule): List { val ruleEngineBuilder = getRuleEngine(java.util.List.of(rule)) - val event = RuleEvent.builder() - .event(EVENT_ID) - .programStage(PROGRAM_STAGE) - .programStageName(PROGRAM_STAGE_NAME) - .status(RULE_EVENT_STATUS) - .eventDate(EVENT_DATE) - .dueDate(DUE_DATE) - .organisationUnit(ORGANISATION_UNIT) - .organisationUnitCode(ORGANISATION_UNIT_CODE) - .dataValues(ArrayList()) - .build() + val event = RuleEvent(event = EVENT_ID, programStage = PROGRAM_STAGE, + programStageName = PROGRAM_STAGE_NAME, status = RULE_EVENT_STATUS, + eventDate = EVENT_DATE, dueDate = DUE_DATE, + organisationUnit = ORGANISATION_UNIT, organisationUnitCode = ORGANISATION_UNIT_CODE, + completedDate = null, + dataValues = emptyList()) val ruleEngine = ruleEngineBuilder.enrollment(enrollment).build() return ruleEngine.evaluate(event).call() } diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineContextTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineContextTest.kt index b7ceb714..1311228e 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineContextTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineContextTest.kt @@ -4,28 +4,14 @@ import io.mockk.mockk import org.hisp.dhis.rules.models.Rule import org.hisp.dhis.rules.models.RuleVariable import org.hisp.dhis.rules.util.MockRuleVariable -import org.junit.Assert -import org.junit.Test +import kotlin.test.* class RuleEngineContextTest { private val ruleVariable: RuleVariable = MockRuleVariable() private val ruleVariableTwo: RuleVariable = MockRuleVariable() private val rule: Rule = mockk() private val ruleTwo: Rule = mockk() - @Test(expected = IllegalArgumentException::class) - fun builderShouldThrowOnNullVariableList() { - RuleEngineContext.builder() - .rules(ArrayList()) - .ruleVariables(null) - } - - @Test(expected = IllegalArgumentException::class) - fun builderShouldThrowOnNullRulesList() { - RuleEngineContext.builder() - .ruleVariables(ArrayList()) - .ruleVariables(null) - } - + @Test fun builderShouldContainImmutableCopyOfRules() { val members = listOf("one", "two") @@ -42,22 +28,22 @@ class RuleEngineContextTest { .build() ruleVariables.add(ruleVariableTwo) rules.add(ruleTwo) - Assert.assertEquals(1, ruleEngineContext.ruleVariables.size.toLong()) - Assert.assertEquals(ruleVariable, ruleEngineContext.ruleVariables[0]) - Assert.assertEquals(1, ruleEngineContext.supplementaryData.size.toLong()) - Assert.assertNotNull(ruleEngineContext.supplementaryData["text-key"]) - Assert.assertEquals(members, ruleEngineContext.supplementaryData["text-key"]) - Assert.assertEquals(1, ruleEngineContext.rules.size.toLong()) - Assert.assertEquals(rule, ruleEngineContext.rules[0]) + assertEquals(1, ruleEngineContext.ruleVariables.size) + assertEquals(ruleVariable, ruleEngineContext.ruleVariables[0]) + assertEquals(1, ruleEngineContext.supplementaryData.size) + assertNotNull(ruleEngineContext.supplementaryData["text-key"]) + assertEquals(members, ruleEngineContext.supplementaryData["text-key"]) + assertEquals(1, ruleEngineContext.rules.size) + assertEquals(rule, ruleEngineContext.rules[0]) try { ruleEngineContext.ruleVariables.clear() - Assert.fail("UnsupportedOperationException was expected, but nothing was thrown.") + fail("UnsupportedOperationException was expected, but nothing was thrown.") } catch (unsupportedOperationException: UnsupportedOperationException) { // noop } try { ruleEngineContext.rules.clear() - Assert.fail("UnsupportedOperationException was expected, but nothing was thrown.") + fail("UnsupportedOperationException was expected, but nothing was thrown.") } catch (unsupportedOperationException: UnsupportedOperationException) { // noop } @@ -72,6 +58,6 @@ class RuleEngineContextTest { .build() val ruleEngineBuilderOne = ruleEngineContext.toEngineBuilder() val ruleEngineBuilderTwo = ruleEngineContext.toEngineBuilder() - Assert.assertNotEquals(ruleEngineBuilderOne, ruleEngineBuilderTwo) + assertNotEquals(ruleEngineBuilderOne, ruleEngineBuilderTwo) } } diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineEffectTypesTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineEffectTypesTest.kt index 60bebd77..343df572 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineEffectTypesTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineEffectTypesTest.kt @@ -12,23 +12,15 @@ import kotlin.test.assertTrue // ToDo: various source type tests (referencing variables from different events) class RuleEngineEffectTypesTest { private fun getTestRuleEvent(status: RuleEvent.Status): RuleEvent { - return RuleEvent.builder() - .event("test_event") - .programStage("test_program_stage") - .programStageName("") - .status(status) - .eventDate(Date()) - .dueDate(Date()) - .organisationUnit("") - .organisationUnitCode("") - .dataValues( - List.of( + return RuleEvent(event = "test_event", programStage = "test_program_stage", + programStageName = "", status = status, eventDate = Date(), dueDate = Date(), + organisationUnit = "", organisationUnitCode = "", completedDate = null, + dataValues = List.of( RuleDataValue.create( Date(), "test_program_stage", "test_data_element", "test_value" ) ) ) - .build() } @Test @@ -52,7 +44,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngineMultiple(rule, getTestRuleEvent(RuleEvent.Status.ACTIVE)) val ruleEffects = ruleEngine.evaluate() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("test_string", ruleEffects[0].ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleEffects[0].ruleAction) } @@ -65,7 +57,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("event_uid;test_data_value_one", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -78,7 +70,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -91,7 +83,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -104,7 +96,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -132,7 +124,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("V{event_status} =='COMPLETED'", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.COMPLETED)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -154,7 +146,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -165,7 +157,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertTrue(ruleEffects[0].ruleAction is RuleActionScheduleMessage) assertEquals("2018-04-24", ruleEffects[0].data) } @@ -176,7 +168,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -187,7 +179,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -198,7 +190,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -209,7 +201,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -222,7 +214,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -235,7 +227,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } @@ -248,7 +240,7 @@ class RuleEngineEffectTypesTest { val rule = Rule("true", listOf(ruleAction)) val ruleEngine = getRuleEngine(rule) val ruleEffects = ruleEngine.evaluate(getTestRuleEvent(RuleEvent.Status.ACTIVE)).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data) assertEquals(ruleAction, ruleEffects[0].ruleAction) } diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineFunctionTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineFunctionTest.kt index c80c61ae..e00722f9 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineFunctionTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineFunctionTest.kt @@ -29,7 +29,7 @@ class RuleEngineFunctionTest { "" ) val ruleEffects = ruleEngine.evaluate(ruleEnrollment).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -49,26 +49,26 @@ class RuleEngineFunctionTest { today, today, RuleEnrollment.Status.ACTIVE, "", null, listOf(), "" ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", - null + ) ) - val ruleNotFailingEvent = RuleEvent.create( - "test_not_failing_event", "test_program_stage", - RuleEvent.Status.ACTIVE, yesterday, yesterday, "", null, java.util.List.of( + val ruleNotFailingEvent = RuleEvent( + "test_not_failing_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, yesterday, yesterday, null, "", + null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", - null + ) ) val ruleEngine = RuleEngineTestUtils.getRuleEngine( java.util.List.of(failingRule), ruleEnrollment, java.util.List.of(ruleEvent, ruleNotFailingEvent) ) val ruleEffects = ruleEngine.evaluate() - assertEquals(3, ruleEffects.size.toLong()) + assertEquals(3, ruleEffects.size) assertTrue(getRuleEffectsByUid(ruleEffects, "test_event")!!.ruleEffects().isEmpty()) assertFalse(getRuleEffectsByUid(ruleEffects, "test_not_failing_event")!!.ruleEffects().isEmpty()) assertEquals("4", getRuleEffectsByUid(ruleEffects, "test_not_failing_event")!!.ruleEffects()[0].data()) @@ -90,20 +90,19 @@ class RuleEngineFunctionTest { "test_action_content", "d2:hasValue(#{test_variable})" ) val ruleVariable: RuleVariable = RuleVariableCurrentEvent.create( - "test_variable", "test_data_element", RuleValueType.TEXT, true, ArrayList() + "test_variable", "test_data_element_one", RuleValueType.TEXT, true, ArrayList() ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", "test_value" - ) - ), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( + RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "test_value") + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("true", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -121,16 +120,15 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", option1.code - ) - ), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( + RuleDataValue.create(Date(), "test_program_stage", "test_data_element", option1.code) + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(option1.name, ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -148,16 +146,15 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", option2.code - ) - ), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( + RuleDataValue.create(Date(), "test_program_stage", "test_data_element", option2.code) + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(option2.code, ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -173,16 +170,15 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", "test_value" - ) - ), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( + RuleDataValue.create(Date(), "test_program_stage", "test_data_element", "test_value") + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("true", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -197,13 +193,15 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, ArrayList(), - "test_program_stage_name", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( + RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("false", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -217,13 +215,15 @@ class RuleEngineFunctionTest { .create("variable", "test_data_element", RuleValueType.TEXT, true, ArrayList()) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage_id", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, ArrayList(), - "test_program_stage_name", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage_id", "test_program_stage_name", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", + null, java.util.List.of( + RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("test_program_stage_name", ruleEffects[0].data()) } @@ -241,16 +241,16 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariableOne, ruleVariableTwo)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2017-01-01"), RuleDataValue .create(Date(), "test_program_stage", "test_data_element_two", "2017-02-01") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("31", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -268,16 +268,16 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariableOne, ruleVariableTwo)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2017-01-01"), RuleDataValue .create(Date(), "test_program_stage", "test_data_element_two", "2017-02-01") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("365", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -302,15 +302,14 @@ class RuleEngineFunctionTest { .constantsValue(HashMap()) .build().toEngineBuilder().triggerEnvironment(TriggerEnvironment.SERVER) .build() - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "location1", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "location1", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "OU_GROUP_ID") - ), - "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("true", ruleEffects[0].data()) } @@ -336,15 +335,14 @@ class RuleEngineFunctionTest { .constantsValue(HashMap()) .build().toEngineBuilder().triggerEnvironment(TriggerEnvironment.SERVER) .build() - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "location1", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "location1", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "OU_GROUP_ID") - ), - "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("true", ruleEffects[0].data()) } @@ -369,14 +367,14 @@ class RuleEngineFunctionTest { .constantsValue(HashMap()) .build().toEngineBuilder().triggerEnvironment(TriggerEnvironment.SERVER) .build() - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "location1", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "location1", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "role1") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("true", ruleEffects[0].data()) } @@ -402,14 +400,14 @@ class RuleEngineFunctionTest { .constantsValue(HashMap()) .build().toEngineBuilder().triggerEnvironment(TriggerEnvironment.SERVER) .build() - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "location1", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "location1", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "role1") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("true", ruleEffects[0].data()) } @@ -427,27 +425,27 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = RuleEngineTestUtils.getRuleEngine(rule, java.util.List.of(ruleVariableOne, ruleVariableTwo)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2017-01-01"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "2") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(ruleEffects.size.toLong(), 1) + assertEquals(ruleEffects.size, 1) assertEquals(ruleEffects[0].ruleAction(), ruleAction) assertEquals(ruleEffects[0].data(), "2017-01-03") - val ruleEvent2 = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2017-01-03"), RuleDataValue .create(Date(), "test_program_stage", "test_data_element_two", "-2") - ), "", null + ) ) val ruleEffects2 = ruleEngine.evaluate(ruleEvent2).call() - assertEquals(1, ruleEffects2.size.toLong()) + assertEquals(1, ruleEffects2.size) assertEquals(ruleAction, ruleEffects2[0].ruleAction()) assertEquals("2017-01-01", ruleEffects2[0].data()) } @@ -462,27 +460,27 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -498,27 +496,27 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -536,33 +534,33 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent4 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent4 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3, ruleEvent4)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("3", ruleEffects[0].data()) } @@ -580,21 +578,21 @@ class RuleEngineFunctionTest { java.util.List.of(ruleAction), "", "" ) val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -612,21 +610,21 @@ class RuleEngineFunctionTest { java.util.List.of(ruleAction), "", "" ) val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -645,33 +643,33 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent4 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent4 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3, ruleEvent4)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("3", ruleEffects[0].data()) } @@ -686,14 +684,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction1), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2.6") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction1, ruleEffects[0].ruleAction()) assertEquals("3", ruleEffects[0].data()) } @@ -708,14 +706,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2.6") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("0.6", ruleEffects[0].data()) } @@ -730,14 +728,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "ABCD") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("BC", ruleEffects[0].data()) } @@ -758,15 +756,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2018-01-01"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "2018-02-01") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("4", ruleEffects[0].data()) } @@ -787,15 +785,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2018-01-01"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "2018-09-01") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("8", ruleEffects[0].data()) } @@ -818,15 +816,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "2016-01-01"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "2018-09-01") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -850,12 +848,12 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, listOf(), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, listOf() ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -867,12 +865,12 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, listOf()) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, listOf(), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, listOf() ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("0", ruleEffects[0].data()) } @@ -884,12 +882,11 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, listOf()) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, listOf(), "", null - ) + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, listOf()) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("1", ruleEffects[0].data()) } @@ -904,27 +901,27 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "0") - ), "", null + ) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "1") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "-3") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -940,27 +937,27 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "0") - ), "", null + ) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "1") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "-3") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -975,14 +972,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "yyyy-mm-dd") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("yyyy", ruleEffects[0].data()) } @@ -997,14 +994,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "yyyy-mm-dd") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("dd", ruleEffects[0].data()) } @@ -1019,14 +1016,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "weeks") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("weeks+days", ruleEffects[0].data()) } @@ -1041,25 +1038,24 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "44455545454") - ), - "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(ruleEffects.size.toLong(), 1) + assertEquals(ruleEffects.size, 1) assertEquals(ruleEffects[0].ruleAction(), ruleAction) assertEquals("true", ruleEffects[0].data()) - val ruleEvent2 = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "444887777") - ), "", null + ) ) val ruleEffects2 = ruleEngineBuilder.build().evaluate(ruleEvent2).call() - assertEquals(1, ruleEffects2.size.toLong()) + assertEquals(1, ruleEffects2.size) assertEquals(ruleAction, ruleEffects2[0].ruleAction()) assertEquals("false", ruleEffects2[0].data()) } @@ -1074,14 +1070,14 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "testString") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("10", ruleEffects[0].data()) } @@ -1096,16 +1092,15 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue .create(Date(), "test_program_stage", "test_data_element_one", "test-String-for-split") - ), - "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("for", ruleEffects[0].data()) } @@ -1130,16 +1125,16 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo, ruleVariableThree) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "19.9"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "0.9"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_three", "10.6") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("6", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1162,15 +1157,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "4.5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1192,15 +1187,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "66.3"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "1") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1222,15 +1217,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "68.7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1252,15 +1247,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "3"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1282,15 +1277,15 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "12.5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "1") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1310,30 +1305,30 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1354,30 +1349,30 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -1397,30 +1392,30 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("5", ruleEffects[0].data()) } @@ -1441,30 +1436,30 @@ class RuleEngineFunctionTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("5", ruleEffects[0].data()) } @@ -1486,29 +1481,27 @@ class RuleEngineFunctionTest { ) val rule: Rule = Rule("true", listOf(ruleAction), "test_rule", "") val ruleEngineBuilder = RuleEngineTestUtils.getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, dayBeforeYesterday, Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","",RuleEvent.Status.ACTIVE, dayBeforeYesterday, Date(), + null, "", null, java.util.List.of( RuleDataValue.create(dayBeforeYesterday, "test_program_stage1", "test_data_element_one", "value1") - ), - "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, yesterday, Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, yesterday, Date (), null, "", null, java.util.List.of( RuleDataValue.create(yesterday, "test_program_stage2", "test_data_element_one", "value2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, dayAfterTomorrow, dayAfterTomorrow, "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, dayAfterTomorrow, dayAfterTomorrow, null, "", null, java.util.List.of( RuleDataValue.create(dayAfterTomorrow, "test_program_stage3", "test_data_element_one", "value3") - ), - "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals(DATE_FORMAT.format(dayAfterTomorrow), ruleEffects[0].data()) } diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineGetDescriptionTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineGetDescriptionTest.kt index 4124adb8..83f29bb1 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineGetDescriptionTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineGetDescriptionTest.kt @@ -1,11 +1,7 @@ package org.hisp.dhis.rules import org.hisp.dhis.rules.models.* -import org.junit.Assert -import org.junit.Before -import org.junit.Test -import org.junit.runner.RunWith -import org.junit.runners.JUnit4 +import kotlin.test.* /* * Copyright (c) 2004-2020, University of Oslo @@ -36,11 +32,10 @@ import org.junit.runners.JUnit4 */ /** * @author Zubair Asghar */ -@RunWith(JUnit4::class) class RuleEngineGetDescriptionTest { private var itemStore: MutableMap = HashMap() private val ruleAction: RuleAction = RuleActionText.createForFeedback("", "") - @Before + @BeforeTest fun setUp() { itemStore = HashMap() val var_1 = DataItem(test_var_one, ItemValueType.TEXT) @@ -69,12 +64,12 @@ class RuleEngineGetDescriptionTest { val rule1= Rule("d2:daysBetween((#{test_var_date_one},#{test_var_date_two})", listOf(ruleAction)) var ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() var result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) + assertNotNull(result) + assertFalse(result.valid()) ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() result = ruleEngine.evaluate(rule1.condition) - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) + assertNotNull(result) + assertFalse(result.valid()) } @Test @@ -82,8 +77,8 @@ class RuleEngineGetDescriptionTest { val rule = Rule("d2:hasValue(#{test_var_one1})", listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) + assertNotNull(result) + assertFalse(result.valid()) } @Test @@ -91,16 +86,16 @@ class RuleEngineGetDescriptionTest { var rule = Rule("d2:length(#{test_var_one}) > 0", listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() var result = ruleEngine.evaluate(rule.condition()) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) rule = Rule("d2:length(#{test_var_date_one}) > 0 ", listOf(ruleAction)) result = ruleEngine.evaluate(rule.condition()) - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) + assertNotNull(result) + assertFalse(result.valid()) rule = Rule("d2:length(#{test_var_number}) > 0 ", listOf(ruleAction)) result = ruleEngine.evaluate(rule.condition()) - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) + assertNotNull(result) + assertFalse(result.valid()) } @Test @@ -108,8 +103,8 @@ class RuleEngineGetDescriptionTest { val rule = Rule("d2:count(#{test_var_one}) > 0 && d2:hasValue(#{test_var_two})", listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -117,9 +112,9 @@ class RuleEngineGetDescriptionTest { val rule= Rule("d2:hasValue('test_var_three')", listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertEquals("d2:hasValue(Variable_THREE)", result.description()) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertEquals("d2:hasValue(Variable_THREE)", result.description()) + assertTrue(result.valid()) } @Test @@ -127,9 +122,9 @@ class RuleEngineGetDescriptionTest { val rule= Rule("'test_var_three' == 'email'", listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertEquals("'test_var_three' == 'email'", result.description()) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertEquals("'test_var_three' == 'email'", result.description()) + assertTrue(result.valid()) } @Test @@ -137,9 +132,9 @@ class RuleEngineGetDescriptionTest { val rule= Rule("A{test_var_three} == 'email'", listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertEquals("Variable_THREE == 'email'", result.description()) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertEquals("Variable_THREE == 'email'", result.description()) + assertTrue(result.valid()) } @Test @@ -148,8 +143,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -158,8 +153,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -168,8 +163,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -178,8 +173,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -188,8 +183,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -198,8 +193,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -208,8 +203,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -218,8 +213,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -228,8 +223,8 @@ class RuleEngineGetDescriptionTest { val rule= Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test @@ -238,29 +233,29 @@ class RuleEngineGetDescriptionTest { val rule = Rule(condition, listOf(ruleAction)) val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() val result = ruleEngine.evaluate(rule.condition) - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) } @Test fun testGetDescriptionForDataFieldExpression() { val ruleEngine = getRuleEngineBuilderForDescription(itemStore).build() var result = ruleEngine.evaluateDataFieldExpression("1 + 1") - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) result = ruleEngine.evaluateDataFieldExpression("d2:hasValue(#{test_var_two}) && d2:count(#{test_var_one}) > 0 ") - Assert.assertNotNull(result) - Assert.assertTrue(result.valid()) + assertNotNull(result) + assertTrue(result.valid()) result = ruleEngine.evaluateDataFieldExpression("1 + 1 +") - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) - Assert.assertTrue(result.exception() is RuleEngineValidationException) + assertNotNull(result) + assertFalse(result.valid()) + assertTrue(result.exception() is RuleEngineValidationException) result = ruleEngine.evaluateDataFieldExpression("d2:hasValue(#{test_var_two}) && d2:count(#{test_var_one}) > 0 (") - Assert.assertNotNull(result) - Assert.assertFalse(result.valid()) - Assert.assertTrue(result.exception() is RuleEngineValidationException) + assertNotNull(result) + assertFalse(result.valid()) + assertTrue(result.exception() is RuleEngineValidationException) } private fun getRuleEngineBuilderForDescription(itemStore: Map): RuleEngine.Builder { diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineTest.kt index 69e59569..10500889 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineTest.kt @@ -23,8 +23,8 @@ internal class RuleEngineTest { @Test fun builderShouldPropagateImmutableEventsList() { - val ruleEventOne = RuleEvent.MOCK - val ruleEventTwo = RuleEvent.MOCK + val ruleEventOne = mockk() + val ruleEventTwo = mockk() val ruleEvents: MutableList = ArrayList() ruleEvents.add(ruleEventOne) val engine: RuleEngine = ruleEngineContext.toEngineBuilder() @@ -49,8 +49,8 @@ internal class RuleEngineTest { @Test(expected = IllegalStateException::class) fun evaluateShouldThrowIfEventIsAlreadyInContext() { - val ruleEvent = RuleEvent.create("test_event", "test_programstage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, ArrayList(), "", null) + val ruleEvent = RuleEvent("test_event", "test_programstage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null,"", null, ArrayList()) val ruleEvents: MutableList = ArrayList() ruleEvents.add(ruleEvent) val ruleEngine = ruleEngineContext.toEngineBuilder() diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineValueTypesTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineValueTypesTest.kt index 12b2ea6a..8a456580 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineValueTypesTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineValueTypesTest.kt @@ -14,12 +14,11 @@ class RuleEngineValueTypesTest { val ruleVariable: RuleVariable = RuleVariableCurrentEvent .create("test_variable", "test_data_element", RuleValueType.BOOLEAN, true, ArrayList()) val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, ArrayList(), "", null - ) + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, ArrayList()) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("false", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -33,12 +32,11 @@ class RuleEngineValueTypesTest { val ruleVariable: RuleVariable = RuleVariableCurrentEvent .create("test_variable", "test_data_element", RuleValueType.NUMERIC, true, ArrayList()) val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, ArrayList(), "", null - ) + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, ArrayList()) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("0", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -52,12 +50,12 @@ class RuleEngineValueTypesTest { val ruleVariable: RuleVariable = RuleVariableCurrentEvent .create("test_variable", "test_data_element", RuleValueType.TEXT, true, ArrayList()) val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, ArrayList(), "", null + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, ArrayList() ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } diff --git a/src/test/java/org/hisp/dhis/rules/RuleEngineVariableNameTest.kt b/src/test/java/org/hisp/dhis/rules/RuleEngineVariableNameTest.kt index 67f95432..ada8c5dc 100644 --- a/src/test/java/org/hisp/dhis/rules/RuleEngineVariableNameTest.kt +++ b/src/test/java/org/hisp/dhis/rules/RuleEngineVariableNameTest.kt @@ -75,9 +75,9 @@ class RuleEngineVariableNameTest { rule, ruleVariables ) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element1", "2.6"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element2", "2.6"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element3", "2.6"), @@ -88,10 +88,10 @@ class RuleEngineVariableNameTest { RuleDataValue.create(Date(), "test_program_stage", "test_data_element8", "2.6"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element9", "2.6"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element10", "2.6") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(10, ruleEffects.size.toLong()) + assertEquals(10, ruleEffects.size) assertEquals(ruleAction1, ruleEffects[0].ruleAction()) assertEquals("3", ruleEffects[0].data()) assertEquals(ruleAction2, ruleEffects[1].ruleAction()) @@ -124,16 +124,16 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create( Date(), "test_program_stage", "test_data_element", "test_value" ) - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("true", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -148,16 +148,16 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create( Date(), "test_program_stage", "test_data_element", "test_value" ) - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("true", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -172,27 +172,27 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -207,27 +207,27 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -245,33 +245,33 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent4 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent4 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3, ruleEvent4)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("3", ruleEffects[0].data()) } @@ -289,33 +289,33 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition2") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "condition") - ), "", null + ) ) - val ruleEvent4 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent4 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "condition") - ), "", null + ) ) ruleEngineBuilder.events(java.util.List.of(ruleEvent2, ruleEvent3, ruleEvent4)) val ruleEffects = ruleEngineBuilder.build().evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("3", ruleEffects[0].data()) } @@ -330,27 +330,27 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "0") - ), "", null + ) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "1") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "-3") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -365,27 +365,27 @@ class RuleEngineVariableNameTest { ) val rule: Rule = Rule("true", java.util.List.of(ruleAction), "", "") val ruleEngineBuilder = getRuleEngineBuilder(rule, java.util.List.of(ruleVariableOne)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent = RuleEvent( + "test_event", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "0") - ), "", null + ) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "1") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event1", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event1", "test_program_stage","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "-3") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("2", ruleEffects[0].data()) } @@ -406,30 +406,30 @@ class RuleEngineVariableNameTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -449,30 +449,30 @@ class RuleEngineVariableNameTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -492,30 +492,30 @@ class RuleEngineVariableNameTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("5", ruleEffects[0].data()) } @@ -536,30 +536,30 @@ class RuleEngineVariableNameTest { rule, java.util.List.of(ruleVariableOne, ruleVariableTwo) ) - val ruleEvent1 = RuleEvent.create( - "test_event1", "test_program_stage1", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent1 = RuleEvent( + "test_event1", "test_program_stage1","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "5"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent2 = RuleEvent.create( - "test_event2", "test_program_stage2", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent2 = RuleEvent( + "test_event2", "test_program_stage2","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "7"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) - val ruleEvent3 = RuleEvent.create( - "test_event3", "test_program_stage3", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, java.util.List.of( + val ruleEvent3 = RuleEvent( + "test_event3", "test_program_stage3","", + RuleEvent.Status.ACTIVE, Date(), Date (), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "test_program_stage", "test_data_element_one", "8"), RuleDataValue.create(Date(), "test_program_stage", "test_data_element_two", "male") - ), "", null + ) ) val ruleEffects = ruleEngineBuilder.events(java.util.List.of(ruleEvent1, ruleEvent2)).build() .evaluate(ruleEvent3).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals(ruleAction, ruleEffects[0].ruleAction()) assertEquals("5", ruleEffects[0].data()) } diff --git a/src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.java b/src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.java deleted file mode 100644 index 9f8fcf2d..00000000 --- a/src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.java +++ /dev/null @@ -1,779 +0,0 @@ -package org.hisp.dhis.rules; - -import org.hisp.dhis.rules.models.RuleAttributeValue; -import org.hisp.dhis.rules.models.RuleDataValue; -import org.hisp.dhis.rules.models.RuleEnrollment; -import org.hisp.dhis.rules.models.RuleEvent; -import org.hisp.dhis.rules.models.RuleValueType; -import org.hisp.dhis.rules.models.RuleVariable; -import org.hisp.dhis.rules.models.RuleVariableAttribute; -import org.hisp.dhis.rules.models.RuleVariableCurrentEvent; -import org.hisp.dhis.rules.models.RuleVariableNewestEvent; -import org.hisp.dhis.rules.models.RuleVariableNewestStageEvent; -import org.hisp.dhis.rules.models.RuleVariablePreviousEvent; -import org.hisp.dhis.rules.models.TriggerEnvironment; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -import javax.annotation.Nonnull; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.ZoneOffset; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import static org.hisp.dhis.rules.RuleVariableValueAssert.assertThatVariable; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -@RunWith( JUnit4.class ) -public class RuleVariableValueMapBuilderTest -{ - private static final String DATE_PATTERN = "yyyy-MM-dd"; - - private SimpleDateFormat dateFormat; - - @Nonnull - private static String wrap( @Nonnull String source ) - { - return String.format( Locale.US, "%s", source ); - } - - @Before - public void setUp() - { - dateFormat = new SimpleDateFormat( DATE_PATTERN, Locale.US ); - } - - @Test( expected = IllegalStateException.class ) - public void ruleEnrollmentShouldThrowIfTargetEnrollmentIsAlreadySet() - { - RuleEnrollment ruleEnrollment = RuleEnrollment.MOCK; - RuleVariableValueMapBuilder.target( ruleEnrollment ) - .ruleEnrollment( ruleEnrollment ) - .build(); - } - - @Test - public void currentEventVariableShouldContainNullValueForEnrollmentEvaluation() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableCurrentEvent.create( - "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, new ArrayList<>()); - - Date eventDate = dateFormat.parse( "2015-01-01" ); - - // values from context events should be ignored - RuleEnrollment ruleEnrollment = RuleEnrollment.create( "test_enrollment", - dateFormat.parse( "2015-01-01" ), dateFormat.parse( "2015-01-01" ), - RuleEnrollment.Status.ACTIVE, "", null, List.of( - RuleAttributeValue.create( "test_attribute_one", "test_attribute_value_one" ), - RuleAttributeValue.create( "test_attribute_two", "test_attribute_value_two" ) ), "" ); - RuleEvent contextEventOne = RuleEvent.create( "test_context_event_one", "test_program_stage", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", null, List.of( - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_one", "test_context_value_one" ), - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_two", "test_context_value_two" ) ), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( ruleEnrollment ) - .ruleVariables(List.of(ruleVariableOne)) - .ruleEvents(List.of(contextEventOne)) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .build(); - - assertThatVariable( valueMap.get( "test_variable_one" ) ).hasValue( null ) - .isTypeOf( RuleValueType.TEXT ); - } - - @Test - public void currentEventVariableShouldContainValuesFromCurrentEvent() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableCurrentEvent.create( - "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, new ArrayList<>()); - RuleVariable ruleVariableTwo = RuleVariableCurrentEvent.create( - "test_variable_two", "test_dataelement_two", RuleValueType.TEXT, true, new ArrayList<>()); - - Date eventDate = dateFormat.parse( "2015-01-01" ); - Date dueDate = dateFormat.parse( "2016-01-01" ); - - // values from context events should be ignored - RuleEvent contextEventOne = RuleEvent.create( "test_context_event_one", "test_program_stage", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", null, List.of( - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_one", "test_context_value_one" ), - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_two", "test_context_value_two" ) ), "", null); - RuleEvent contextEventTwo = RuleEvent.create( "test_context_event_two", "test_program_stage", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", null, List.of( - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_one", "test_context_value_three" ), - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_two", "test_context_value_four" ) ), "", null); - // values from current ruleEvent should be propagated to the variable values - RuleEvent currentEvent = RuleEvent.create( "test_event_uid", "test_program_stage", - RuleEvent.Status.ACTIVE, eventDate, dueDate, "", null, List.of( - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_one", "test_value_one" ), - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_two", "test_value_two" ) ), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( currentEvent ) - .ruleVariables( List.of( ruleVariableOne, ruleVariableTwo ) ) - .ruleEvents( List.of( contextEventOne, contextEventTwo ) ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .build(); - - assertEquals( valueMap.size() , 13 ); - - 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( eventDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventDate ) ); - - assertThatVariable( valueMap.get( "event_status" ) ).hasValue( wrap( RuleEvent.Status.ACTIVE.toString() ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( RuleEvent.Status.ACTIVE.toString() ); - - // event count variable should respect current event - assertThatVariable( valueMap.get( "event_count" ) ).hasValue( "3" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "3" ); - - assertThatVariable( valueMap.get( "event_id" ) ).hasValue( "test_event_uid" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_event_uid" ); - - assertThatVariable( valueMap.get( "due_date" ) ).hasValue( wrap( dateFormat.format( dueDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dueDate ) ); - - assertThatVariable( valueMap.get( "test_variable_one" ) ).hasValue( "test_value_one" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_value_one" ); - - assertThatVariable( valueMap.get( "test_variable_two" ) ).hasValue( "test_value_two" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_value_two" ); - } - - @Test - public void newestEventProgramVariableShouldContainValueFromNewestContextEvent() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableNewestEvent.create( - "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, new ArrayList<>()); - RuleVariable ruleVariableTwo = RuleVariableNewestEvent.create( - "test_variable_two", "test_dataelement_two", RuleValueType.TEXT, true, new ArrayList<>()); - - Date oldestEventDate = dateFormat.parse( "2013-01-01" ); - Date newestEventDate = dateFormat.parse( "2017-01-01" ); - Date currentEventDate = dateFormat.parse( "2015-01-01" ); - Date currentEventDueDate = null; - - RuleEvent oldestRuleEvent = RuleEvent.create( "test_event_uid_oldest", "test_program_stage", - RuleEvent.Status.ACTIVE, oldestEventDate, oldestEventDate, "", null, List.of( - 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" ) ), "", null); - RuleEvent newestRuleEvent = RuleEvent.create( "test_event_uid_newest", "test_program_stage", - RuleEvent.Status.ACTIVE, newestEventDate, newestEventDate, "", null, List.of( - 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" ) ), "", null); - RuleEvent currentEvent = RuleEvent.create( "test_event_uid_current", "test_program_stage", - RuleEvent.Status.ACTIVE, currentEventDate, currentEventDueDate, "", null, List.of( - 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" ) ), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( currentEvent ) - .ruleVariables( List.of( ruleVariableOne, ruleVariableTwo ) ) - .ruleEvents( List.of( oldestRuleEvent, newestRuleEvent ) ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .build(); - - assertEquals( valueMap.size() , 12 ); - - 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" ); - - assertNull( valueMap.get( "due_date" ) ); - - 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" ); - } - - @Test - public void newestEventProgramVariableShouldReturnValuesFromCurrentEventWhenIfNewest() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableNewestEvent.create( - "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, new ArrayList<>()); - RuleVariable ruleVariableTwo = RuleVariableNewestEvent.create( - "test_variable_two", "test_dataelement_two", RuleValueType.TEXT, true, new ArrayList<>()); - - Date dateEventOne = dateFormat.parse( "2013-01-01" ); - Date dateEventTwo = dateFormat.parse( "2014-01-01" ); - Date dateEventCurrent = dateFormat.parse( "2015-01-01" ); - Date dateEventDueCurrent = dateFormat.parse( "2016-01-01" ); - - RuleEvent firstRuleEvent = RuleEvent.create( "test_event_uid_one", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, "", null, List.of( - RuleDataValue.create( dateEventOne, "test_program_stage", - "test_dataelement_one", "test_value_dataelement_one_first" ), - RuleDataValue.create( dateEventOne, "test_program_stage", - "test_dataelement_two", "test_value_dataelement_two_first" ) ), "", null); - RuleEvent secondRuleEvent = RuleEvent.create( "test_event_uid_two", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, "", null, List.of( - RuleDataValue.create( dateEventTwo, "test_program_stage", - "test_dataelement_one", "test_value_dataelement_one_second" ), - RuleDataValue.create( dateEventTwo, "test_program_stage", - "test_dataelement_two", "test_value_dataelement_two_second" ) ), "", null); - RuleEvent currentEvent = RuleEvent.create( "test_event_uid_current", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventCurrent, dateEventDueCurrent, "", null, List.of( - RuleDataValue.create( dateEventCurrent, "test_program_stage", - "test_dataelement_one", "test_value_dataelement_one_current" ), - RuleDataValue.create( dateEventCurrent, "test_program_stage", - "test_dataelement_two", "test_value_dataelement_two_current" ) ), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( currentEvent ) - .ruleVariables( List.of( ruleVariableOne, ruleVariableTwo ) ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .ruleEvents( List.of( firstRuleEvent, secondRuleEvent ) ) - .build(); - - assertEquals( 13 , valueMap.size() ); - - 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( dateEventCurrent ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventCurrent ) ); - - 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( dateEventDueCurrent ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventDueCurrent ) ); - - assertThatVariable( valueMap.get( "test_variable_one" ) ) - .hasValue( "test_value_dataelement_one_current" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_value_dataelement_one_current", - "test_value_dataelement_one_second", "test_value_dataelement_one_first" ); - - assertThatVariable( valueMap.get( "test_variable_two" ) ) - .hasValue( "test_value_dataelement_two_current" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_value_dataelement_two_current", - "test_value_dataelement_two_second", "test_value_dataelement_two_first" ); - } - - @Test - public void newestEventProgramStageVariableShouldContainValueFromNewestContextEvent() - throws ParseException - { - RuleVariable ruleVariable = RuleVariableNewestStageEvent.create( "test_variable", - "test_dataelement", "test_program_stage_one", RuleValueType.TEXT, true, new ArrayList<>()); - - Date dateEventOne = dateFormat.parse( "2014-02-03" ); - Date dateEventTwo = dateFormat.parse( "2014-03-03" ); - Date dateEventThree = dateFormat.parse( "2015-02-03" ); - Date dateEventCurrent = dateFormat.parse( "2011-02-03" ); - Date dateEventDueCurrent = dateFormat.parse( "2011-02-03" ); - - RuleEvent eventOne = RuleEvent.create( "test_event_uid_one", "test_program_stage_one", - RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, "", null, List.of( - RuleDataValue.create(dateEventOne, "test_program_stage_one", - "test_dataelement", "test_value_one")), "", null); - RuleEvent eventTwo = RuleEvent.create( "test_event_uid_two", "test_program_stage_two", - RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, "", null, List.of( - RuleDataValue.create(dateEventTwo, "test_program_stage_two", - "test_dataelement", "test_value_two")), "", null); - RuleEvent eventThree = RuleEvent.create( "test_event_uid_three", "test_program_stage_two", - RuleEvent.Status.ACTIVE, dateEventThree, dateEventThree, "", null, List.of( - RuleDataValue.create(dateEventThree, "test_program_stage_two", - "test_dataelement", "test_value_three")), "", null); - RuleEvent eventCurrent = RuleEvent.create( "test_event_uid_current", "test_program_stage_one", - RuleEvent.Status.ACTIVE, dateEventCurrent, dateEventDueCurrent, "", null, List.of( - RuleDataValue.create(dateEventCurrent, "test_program_stage_one", - "test_dataelement", "test_value_current")), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( eventCurrent ) - .ruleVariables(List.of(ruleVariable)) - .ruleEvents( List.of( eventOne, eventTwo, eventThree ) ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .build(); - - assertEquals( 12 , valueMap.size() ); - - 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( dateEventCurrent ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventCurrent ) ); - - assertThatVariable( valueMap.get( "event_count" ) ).hasValue( "4" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "4" ); - - 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( dateEventDueCurrent ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventDueCurrent ) ); - - assertThatVariable( valueMap.get( "test_variable" ) ).hasValue( "test_value_one" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_value_one", "test_value_current" ); - } - - @Test - public void newestEventProgramStageVariableShouldNotContainAnyValues() - throws ParseException - { - RuleVariable ruleVariable = RuleVariableNewestStageEvent.create( "test_variable", - "test_dataelement", "test_program_stage_one", RuleValueType.TEXT, true, new ArrayList<>()); - - Date dateEventOne = dateFormat.parse( "2014-03-03" ); - Date dateEventTwo = dateFormat.parse( "2015-02-03" ); - - RuleEvent ruleEventOne = RuleEvent.create( "test_event_uid_one", "test_program_stage_two", - RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, "", null, List.of( - RuleDataValue.create(dateEventOne, "test_program_stage_two", - "test_dataelement", "test_value_one")), "", null); - RuleEvent ruleEventTwo = RuleEvent.create( "test_event_uid_two", "test_program_stage_two", - RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, "", null, List.of( - RuleDataValue.create(dateEventTwo, "test_program_stage_two", - "test_dataelement", "test_value_two")), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( ruleEventTwo ) - .ruleVariables(List.of(ruleVariable)) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .ruleEvents(List.of(ruleEventOne)) - .build(); - - assertEquals( 12 , valueMap.size() ); - - 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( dateEventTwo ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventTwo ) ); - - assertThatVariable( valueMap.get( "event_count" ) ).hasValue( "2" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "2" ); - - assertThatVariable( valueMap.get( "event_id" ) ).hasValue( "test_event_uid_two" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_event_uid_two" ); - - assertThatVariable( valueMap.get( "due_date" ) ).hasValue( wrap( dateFormat.format( dateEventTwo ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventTwo ) ); - - assertThatVariable( valueMap.get( "test_variable" ) ).hasValue( null ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates(); - } - - @Test - public void previousEventVariableShouldContainValuesFromPreviousEvent() - throws ParseException - { - RuleVariable ruleVariable = RuleVariablePreviousEvent.create( "test_variable", - "test_dataelement", RuleValueType.TEXT, true, new ArrayList<>()); - - Date dateEventOne = dateFormat.parse( "2014-02-03" ); - Date dateEventTwo = dateFormat.parse( "2014-03-03" ); - Date dateEventThree = dateFormat.parse( "2015-02-03" ); - Date dateEventCurrent = dateFormat.parse( "2014-05-03" ); - - RuleEvent ruleEventOne = RuleEvent.create( "test_event_uid_one", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, "", null, List.of( - RuleDataValue.create(dateEventOne, "test_program_stage_one", - "test_dataelement", "test_value_one")), "", null); - RuleEvent ruleEventTwo = RuleEvent.create( "test_event_uid_two", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, "", null, List.of( - RuleDataValue.create(dateEventTwo, "test_program_stage_two", - "test_dataelement", "test_value_two")), "", null); - RuleEvent ruleEventThree = RuleEvent.create( "test_event_uid_three", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventThree, dateEventThree, "", null, List.of( - RuleDataValue.create(dateEventThree, "test_program_stage_two", - "test_dataelement", "test_value_three")), "", null); - RuleEvent ruleEventCurrent = RuleEvent.create( "test_event_uid_current", "test_program_stage", - RuleEvent.Status.ACTIVE, dateEventCurrent, dateEventCurrent, "", null, List.of( - RuleDataValue.create(dateEventCurrent, "test_program_stage_one", - "test_dataelement", "test_value_current")), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( ruleEventCurrent ) - .ruleVariables(List.of(ruleVariable)) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .ruleEvents( List.of( ruleEventOne, ruleEventTwo, ruleEventThree ) ) - .build(); - - assertEquals( 12 , valueMap.size() ); - - 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( dateEventCurrent ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventCurrent ) ); - - assertThatVariable( valueMap.get( "event_count" ) ).hasValue( "4" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "4" ); - - 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( dateEventCurrent ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( dateEventCurrent ) ); - - assertThatVariable( valueMap.get( "test_variable" ) ).hasValue( "test_value_two" ) - .isTypeOf( RuleValueType.TEXT ) - .hasCandidates( "test_value_three", "test_value_current", "test_value_two", "test_value_one" ); - } - - @Test - public void attributeVariableShouldContainValuesFromContextEnrollment() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableAttribute.create( "test_variable_one", - "test_attribute_one", RuleValueType.TEXT, true, new ArrayList<>()); - RuleVariable ruleVariableTwo = RuleVariableAttribute.create( "test_variable_two", - "test_attribute_two", RuleValueType.TEXT, true, new ArrayList<>()); - - Date eventDate = dateFormat.parse( "2015-01-01" ); - Date enrollmentDate = dateFormat.parse( "2014-03-01" ); - - // values from enrollment should end up in ruleVariables - RuleEnrollment ruleEnrollment = RuleEnrollment.create( "test_enrollment", - enrollmentDate, enrollmentDate, RuleEnrollment.Status.ACTIVE, "", null, List.of( - RuleAttributeValue.create( "test_attribute_one", "test_attribute_value_one" ), - RuleAttributeValue.create( "test_attribute_two", "test_attribute_value_two" ) ), "" ); - - // values from context events should be ignored - RuleEvent contextEvent = RuleEvent.create( "test_context_event_one", "test_program_stage", - RuleEvent.Status.ACTIVE, eventDate, new Date(), "", null, List.of( - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_one", "test_context_value_one" ), - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_two", "test_context_value_two" ) ), "", null); - RuleEvent currentEvent = RuleEvent.create( "test_event_uid", "test_program_stage", - RuleEvent.Status.ACTIVE, eventDate, eventDate, "", null, List.of( - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_one", "test_value_one" ), - RuleDataValue.create( eventDate, "test_program_stage", - "test_dataelement_two", "test_value_two" ) ), "", null); - - // here we will expect correct values to be returned - Map valueMap = RuleVariableValueMapBuilder.target( currentEvent ) - .ruleEnrollment( ruleEnrollment ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .ruleVariables( List.of( ruleVariableOne, ruleVariableTwo ) ) - .ruleEvents(List.of(contextEvent)) - .build(); - - assertEquals( 20 , valueMap.size() ); - - 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( eventDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventDate ) ); - - assertThatVariable( valueMap.get( "event_count" ) ).hasValue( "2" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "2" ); - - assertThatVariable( valueMap.get( "event_id" ) ).hasValue( "test_event_uid" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_event_uid" ); - - assertThatVariable( valueMap.get( "due_date" ) ).hasValue( wrap( dateFormat.format( eventDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventDate ) ); - - assertThatVariable( valueMap.get( "enrollment_status" ) ) - .hasValue( wrap( RuleEnrollment.Status.ACTIVE.toString() ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( RuleEnrollment.Status.ACTIVE.toString() ); - - assertThatVariable( valueMap.get( "enrollment_date" ) ) - .hasValue( wrap( dateFormat.format( enrollmentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( enrollmentDate ) ); - - assertThatVariable( valueMap.get( "enrollment_id" ) ).hasValue( "test_enrollment" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_enrollment" ); - - assertThatVariable( valueMap.get( "enrollment_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( valueMap.get( "incident_date" ) ) - .hasValue( wrap( dateFormat.format( enrollmentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( enrollmentDate ) ); - - assertThatVariable( valueMap.get( "tei_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( valueMap.get( "test_variable_one" ) ).hasValue( "test_attribute_value_one" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_attribute_value_one" ); - assertThatVariable( valueMap.get( "test_variable_two" ) ).hasValue( "test_attribute_value_two" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_attribute_value_two" ); - } - - @Test - public void ruleEnrollmentValuesShouldBePropagatedToMapCorrectly() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableAttribute.create( "test_variable_one", - "test_attribute_one", RuleValueType.NUMERIC, true, new ArrayList<>()); - RuleVariable ruleVariableTwo = RuleVariableAttribute.create( "test_variable_two", - "test_attribute_two", RuleValueType.TEXT, true, new ArrayList<>()); - RuleVariable ruleVariableThree = RuleVariableCurrentEvent.create( "test_variable_three", - "test_dataelement_one", RuleValueType.BOOLEAN, true, new ArrayList<>()); - - String currentDate = dateFormat.format( new Date() ); - Date enrollmentDate = dateFormat.parse( "2017-02-02" ); - Date incidentDate = dateFormat.parse( "2017-04-02" ); - RuleEnrollment ruleEnrollment = RuleEnrollment.create( "test_enrollment", incidentDate, - enrollmentDate, RuleEnrollment.Status.ACTIVE, "", null, List.of( - RuleAttributeValue.create( "test_attribute_one", "test_attribute_value_one" ), - RuleAttributeValue.create( "test_attribute_two", "test_attribute_value_two" ), - RuleAttributeValue.create( "test_attribute_three", "test_attribute_value_three" ) ), "" ); - - RuleEvent ruleEventOne = RuleEvent.create( "test_event_one", "test_program_stage", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", null, new ArrayList(), "", null); - RuleEvent ruleEventTwo = RuleEvent.create( "test_event_two", "test_program_stage", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", null, new ArrayList(), "", null); - - Map valueMap = RuleVariableValueMapBuilder.target( ruleEnrollment ) - .ruleVariables( List.of( ruleVariableOne, ruleVariableTwo, ruleVariableThree ) ) - .ruleEvents( List.of( ruleEventOne, ruleEventTwo ) ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .build(); - - assertEquals( 15 , valueMap.size() ); - - assertThatVariable( valueMap.get( "current_date" ) ).hasValue( wrap( currentDate ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( currentDate ); - - assertThatVariable( valueMap.get( "event_count" ) ).hasValue( "2" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "2" ); - - assertThatVariable( valueMap.get( "enrollment_date" ) ) - .hasValue( wrap( dateFormat.format( enrollmentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( enrollmentDate ) ); - - assertThatVariable( valueMap.get( "enrollment_id" ) ).hasValue( "test_enrollment" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_enrollment" ); - - assertThatVariable( valueMap.get( "enrollment_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( valueMap.get( "incident_date" ) ) - .hasValue( wrap( dateFormat.format( incidentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( incidentDate ) ); - - assertThatVariable( valueMap.get( "tei_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( valueMap.get( "test_variable_one" ) ).hasValue( "test_attribute_value_one" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "test_attribute_value_one" ); - - assertThatVariable( valueMap.get( "test_variable_two" ) ).isTypeOf( RuleValueType.TEXT ) - .hasValue( "test_attribute_value_two" ).hasCandidates( "test_attribute_value_two" ); - } - - @Test - public void MultipleMapBuilderShoulCreateCorrectMapForEnrollmentAndEvents() - throws ParseException - { - RuleVariable ruleVariableOne = RuleVariableAttribute.create( "test_variable_one", - "test_attribute_one", RuleValueType.NUMERIC, true, new ArrayList<>()); - RuleVariable ruleVariableTwo = RuleVariableAttribute.create( "test_variable_two", - "test_attribute_two", RuleValueType.TEXT, true, new ArrayList<>()); - RuleVariable ruleVariableThree = RuleVariableCurrentEvent.create( "test_variable_three", - "test_dataelement_one", RuleValueType.BOOLEAN, true, new ArrayList<>()); - - String currentDate = dateFormat.format( new Date() ); - Date enrollmentDate = dateFormat.parse( "2017-02-02" ); - Date incidentDate = dateFormat.parse( "2017-04-02" ); - RuleEnrollment ruleEnrollment = RuleEnrollment.create( "test_enrollment", incidentDate, - enrollmentDate, RuleEnrollment.Status.ACTIVE, "", null, List.of( - RuleAttributeValue.create( "test_attribute_one", "test_attribute_value_one" ), - RuleAttributeValue.create( "test_attribute_two", "test_attribute_value_two" ), - RuleAttributeValue.create( "test_attribute_three", "test_attribute_value_three" ) ), "" ); - - LocalDate now = LocalDate.now(); - Date eventOneDate = toDate(now.minusDays( 1 )); - Date eventOneDueDate = toDate(now.minusDays( 2 )); - Date eventTwoDate = toDate(now.minusDays( 3 )); - Date eventTwoDueDate = toDate(now.minusDays( 4 )); - - RuleEvent ruleEventOne = RuleEvent.create( "test_event_one", "test_program_stage", - RuleEvent.Status.ACTIVE, eventOneDate, eventOneDueDate, "", null, new ArrayList(), "", - null ); - RuleEvent ruleEventTwo = RuleEvent.create( "test_event_two", "test_program_stage", - RuleEvent.Status.ACTIVE, eventTwoDate, eventTwoDueDate, "", null, new ArrayList(), "", - null ); - - RuleVariableValueMap ruleVariableValueMap = RuleVariableValueMapBuilder.target( ruleEnrollment ) - .ruleVariables( List.of( ruleVariableOne, ruleVariableTwo, ruleVariableThree ) ) - .ruleEvents( List.of( ruleEventOne, ruleEventTwo ) ) - .triggerEnvironment( TriggerEnvironment.SERVER ) - .multipleBuild(); - - assertEquals( 1 , ruleVariableValueMap.enrollmentMap().size() ); - assertEquals( 2 , ruleVariableValueMap.eventMap().size() ); - - Map enrollmentValueMap = ruleVariableValueMap.enrollmentMap() - .get( ruleEnrollment ); - - Map eventOneValueMap = ruleVariableValueMap.eventMap() - .get( ruleEventOne ); - - Map eventTwoValueMap = ruleVariableValueMap.eventMap() - .get( ruleEventTwo ); - - // Enrollment - assertThatVariable( enrollmentValueMap.get( "current_date" ) ).hasValue( wrap( currentDate ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( currentDate ); - - assertThatVariable( enrollmentValueMap.get( "event_count" ) ).hasValue( "2" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "2" ); - - assertThatVariable( enrollmentValueMap.get( "enrollment_date" ) ) - .hasValue( wrap( dateFormat.format( enrollmentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( enrollmentDate ) ); - - assertThatVariable( enrollmentValueMap.get( "enrollment_id" ) ).hasValue( "test_enrollment" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_enrollment" ); - - assertThatVariable( enrollmentValueMap.get( "enrollment_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( enrollmentValueMap.get( "incident_date" ) ) - .hasValue( wrap( dateFormat.format( incidentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( incidentDate ) ); - - assertThatVariable( enrollmentValueMap.get( "tei_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( enrollmentValueMap.get( "test_variable_one" ) ).hasValue( "test_attribute_value_one" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "test_attribute_value_one" ); - - assertThatVariable( enrollmentValueMap.get( "test_variable_two" ) ).isTypeOf( RuleValueType.TEXT ) - .hasValue( "test_attribute_value_two" ).hasCandidates( "test_attribute_value_two" ); - - // Event one - assertThatVariable( eventOneValueMap.get( "current_date" ) ).hasValue( wrap( currentDate ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( currentDate ); - - assertThatVariable( eventOneValueMap.get( "event_count" ) ).hasValue( "2" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "2" ); - - assertThatVariable( eventOneValueMap.get( "enrollment_date" ) ) - .hasValue( wrap( dateFormat.format( enrollmentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( enrollmentDate ) ); - - assertThatVariable( eventOneValueMap.get( "enrollment_id" ) ).hasValue( "test_enrollment" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_enrollment" ); - - assertThatVariable( eventOneValueMap.get( "enrollment_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( eventOneValueMap.get( "incident_date" ) ) - .hasValue( wrap( dateFormat.format( incidentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( incidentDate ) ); - - assertThatVariable( eventOneValueMap.get( "tei_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( eventOneValueMap.get( "test_variable_one" ) ).hasValue( "test_attribute_value_one" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "test_attribute_value_one" ); - - assertThatVariable( eventOneValueMap.get( "test_variable_two" ) ).isTypeOf( RuleValueType.TEXT ) - .hasValue( "test_attribute_value_two" ).hasCandidates( "test_attribute_value_two" ); - - assertThatVariable( eventOneValueMap.get( "event_date" ) ) - .hasValue( wrap( dateFormat.format( eventOneDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventOneDate ) ); - - assertThatVariable( eventOneValueMap.get( "due_date" ) ) - .hasValue( wrap( dateFormat.format( eventOneDueDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventOneDueDate ) ); - - // Event two - assertThatVariable( eventTwoValueMap.get( "current_date" ) ).hasValue( wrap( currentDate ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( currentDate ); - - assertThatVariable( eventTwoValueMap.get( "event_count" ) ).hasValue( "2" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "2" ); - - assertThatVariable( eventTwoValueMap.get( "enrollment_date" ) ) - .hasValue( wrap( dateFormat.format( enrollmentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( enrollmentDate ) ); - - assertThatVariable( eventTwoValueMap.get( "enrollment_id" ) ).hasValue( "test_enrollment" ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( "test_enrollment" ); - - assertThatVariable( eventTwoValueMap.get( "enrollment_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( eventTwoValueMap.get( "incident_date" ) ) - .hasValue( wrap( dateFormat.format( incidentDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( incidentDate ) ); - - assertThatVariable( eventTwoValueMap.get( "tei_count" ) ).hasValue( "1" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "1" ); - - assertThatVariable( eventTwoValueMap.get( "test_variable_one" ) ).hasValue( "test_attribute_value_one" ) - .isTypeOf( RuleValueType.NUMERIC ).hasCandidates( "test_attribute_value_one" ); - - assertThatVariable( eventTwoValueMap.get( "test_variable_two" ) ).isTypeOf( RuleValueType.TEXT ) - .hasValue( "test_attribute_value_two" ).hasCandidates( "test_attribute_value_two" ); - - assertThatVariable( eventTwoValueMap.get( "event_date" ) ) - .hasValue( wrap( dateFormat.format( eventTwoDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventTwoDate ) ); - - assertThatVariable( eventTwoValueMap.get( "due_date" ) ) - .hasValue( wrap( dateFormat.format( eventTwoDueDate ) ) ) - .isTypeOf( RuleValueType.TEXT ).hasCandidates( dateFormat.format( eventTwoDueDate ) ); - } - - @Test( expected = IllegalStateException.class ) - public void buildShouldThrowOnDuplicateEvent() - { - RuleEvent ruleEvent = RuleEvent.create( "test_event_two", "test_program_stage", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", null, new ArrayList(), "", null ); - - RuleVariableValueMapBuilder.target( ruleEvent ) - .ruleVariables( new ArrayList() ) - .ruleEvents(List.of(ruleEvent)) - .build(); - } - - private static Date toDate(LocalDate date) { - return Date.from(date.atStartOfDay().toInstant(ZoneOffset.UTC)); - } -} diff --git a/src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.kt b/src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.kt new file mode 100644 index 00000000..482f56df --- /dev/null +++ b/src/test/java/org/hisp/dhis/rules/RuleVariableValueMapBuilderTest.kt @@ -0,0 +1,851 @@ +package org.hisp.dhis.rules + +import org.hisp.dhis.rules.models.* +import java.text.ParseException +import java.text.SimpleDateFormat +import java.time.LocalDate +import java.time.ZoneOffset +import java.util.* +import java.util.List +import kotlin.collections.ArrayList +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNull + +class RuleVariableValueMapBuilderTest { + private var dateFormat: SimpleDateFormat? = null + @BeforeTest + fun setUp() { + dateFormat = SimpleDateFormat(DATE_PATTERN, Locale.US) + } + + @Test + fun currentEventVariableShouldContainNullValueForEnrollmentEvaluation() { + val ruleVariableOne: RuleVariable = RuleVariableCurrentEvent.create( + "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, ArrayList() + ) + val eventDate = dateFormat!!.parse("2015-01-01") + + // values from context events should be ignored + val ruleEnrollment = RuleEnrollment.create( + "test_enrollment", + dateFormat!!.parse("2015-01-01"), dateFormat!!.parse("2015-01-01"), + RuleEnrollment.Status.ACTIVE, "", null, List.of( + RuleAttributeValue.create("test_attribute_one", "test_attribute_value_one"), + RuleAttributeValue.create("test_attribute_two", "test_attribute_value_two") + ), "" + ) + val contextEventOne = RuleEvent( + "test_context_event_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, List.of( + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_one", "test_context_value_one" + ), + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_two", "test_context_value_two" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(ruleEnrollment) + .ruleVariables(List.of(ruleVariableOne)) + .ruleEvents(List.of(contextEventOne)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .build() + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_one"]!!).hasValue(null) + .isTypeOf(RuleValueType.TEXT) + } + + @Test + @Throws(ParseException::class) + fun currentEventVariableShouldContainValuesFromCurrentEvent() { + val ruleVariableOne: RuleVariable = RuleVariableCurrentEvent.create( + "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, ArrayList() + ) + val ruleVariableTwo: RuleVariable = RuleVariableCurrentEvent.create( + "test_variable_two", "test_dataelement_two", RuleValueType.TEXT, true, ArrayList() + ) + val eventDate = dateFormat!!.parse("2015-01-01") + val dueDate = dateFormat!!.parse("2016-01-01") + + // values from context events should be ignored + val contextEventOne = RuleEvent( + "test_context_event_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, List.of( + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_one", "test_context_value_one" + ), + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_two", "test_context_value_two" + ) + ) + ) + val contextEventTwo = RuleEvent( + "test_context_event_two", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, List.of( + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_one", "test_context_value_three" + ), + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_two", "test_context_value_four" + ) + ) + ) + // values from current ruleEvent should be propagated to the variable values + val currentEvent = RuleEvent( + "test_event_uid", "test_program_stage", "", + RuleEvent.Status.ACTIVE, eventDate, dueDate, null, "", null, List.of( + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_one", "test_value_one" + ), + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_two", "test_value_two" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(currentEvent) + .ruleVariables(List.of(ruleVariableOne, ruleVariableTwo)) + .ruleEvents(List.of(contextEventOne, contextEventTwo)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .build() + assertEquals(valueMap.size.toLong(), 13) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!).hasValue( + wrap( + dateFormat!!.format(eventDate) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_status"]!!) + .hasValue(wrap(RuleEvent.Status.ACTIVE.toString())) + .isTypeOf(RuleValueType.TEXT).hasCandidates(RuleEvent.Status.ACTIVE.toString()) + + // event count variable should respect current event + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("3") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("3") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid") + RuleVariableValueAssert.assertThatVariable(valueMap["due_date"]!!).hasValue( + wrap( + dateFormat!!.format(dueDate) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dueDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_one"]!!).hasValue("test_value_one") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_value_one") + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_two"]!!).hasValue("test_value_two") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_value_two") + } + + @Test + @Throws(ParseException::class) + fun newestEventProgramVariableShouldContainValueFromNewestContextEvent() { + val ruleVariableOne: RuleVariable = RuleVariableNewestEvent.create( + "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, ArrayList() + ) + val ruleVariableTwo: RuleVariable = RuleVariableNewestEvent.create( + "test_variable_two", "test_dataelement_two", RuleValueType.TEXT, true, ArrayList() + ) + val oldestEventDate = dateFormat!!.parse("2013-01-01") + val newestEventDate = dateFormat!!.parse("2017-01-01") + val currentEventDate = dateFormat!!.parse("2015-01-01") + val currentEventDueDate: Date? = null + val oldestRuleEvent = RuleEvent( + "test_event_uid_oldest", "test_program_stage", "", + RuleEvent.Status.ACTIVE, oldestEventDate, oldestEventDate, null, "", null, List.of( + 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" + ) + ) + ) + val newestRuleEvent = RuleEvent( + "test_event_uid_newest", "test_program_stage", "", + RuleEvent.Status.ACTIVE, newestEventDate, newestEventDate, null, "", null, List.of( + 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" + ) + ) + ) + val currentEvent = RuleEvent( + "test_event_uid_current", "test_program_stage", "", + RuleEvent.Status.ACTIVE, currentEventDate, currentEventDueDate, null, "", null, List.of( + 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" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(currentEvent) + .ruleVariables(List.of(ruleVariableOne, ruleVariableTwo)) + .ruleEvents(List.of(oldestRuleEvent, newestRuleEvent)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .build() + assertEquals(valueMap.size.toLong(), 12) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!) + .hasValue(wrap(dateFormat!!.format(currentEventDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(currentEventDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("3") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("3") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid_current") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid_current") + assertNull(valueMap["due_date"]) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_one"]!!).hasValue("test_value_one_newest") + .isTypeOf(RuleValueType.TEXT).hasCandidates( + "test_value_one_newest", + "test_value_one_current", "test_value_one_oldest" + ) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_two"]!!).hasValue("test_value_two_newest") + .isTypeOf(RuleValueType.TEXT).hasCandidates( + "test_value_two_newest", + "test_value_two_current", "test_value_two_oldest" + ) + } + + @Test + @Throws(ParseException::class) + fun newestEventProgramVariableShouldReturnValuesFromCurrentEventWhenIfNewest() { + val ruleVariableOne: RuleVariable = RuleVariableNewestEvent.create( + "test_variable_one", "test_dataelement_one", RuleValueType.TEXT, true, ArrayList() + ) + val ruleVariableTwo: RuleVariable = RuleVariableNewestEvent.create( + "test_variable_two", "test_dataelement_two", RuleValueType.TEXT, true, ArrayList() + ) + val dateEventOne = dateFormat!!.parse("2013-01-01") + val dateEventTwo = dateFormat!!.parse("2014-01-01") + val dateEventCurrent = dateFormat!!.parse("2015-01-01") + val dateEventDueCurrent = dateFormat!!.parse("2016-01-01") + val firstRuleEvent = RuleEvent( + "test_event_uid_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, null, "", null, List.of( + RuleDataValue.create( + dateEventOne, "test_program_stage", + "test_dataelement_one", "test_value_dataelement_one_first" + ), + RuleDataValue.create( + dateEventOne, "test_program_stage", + "test_dataelement_two", "test_value_dataelement_two_first" + ) + ) + ) + val secondRuleEvent = RuleEvent( + "test_event_uid_two", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, null, "", null, List.of( + RuleDataValue.create( + dateEventTwo, "test_program_stage", + "test_dataelement_one", "test_value_dataelement_one_second" + ), + RuleDataValue.create( + dateEventTwo, "test_program_stage", + "test_dataelement_two", "test_value_dataelement_two_second" + ) + ) + ) + val currentEvent = RuleEvent( + "test_event_uid_current", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventCurrent, dateEventDueCurrent, null, "", null, List.of( + RuleDataValue.create( + dateEventCurrent, "test_program_stage", + "test_dataelement_one", "test_value_dataelement_one_current" + ), + RuleDataValue.create( + dateEventCurrent, "test_program_stage", + "test_dataelement_two", "test_value_dataelement_two_current" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(currentEvent) + .ruleVariables(List.of(ruleVariableOne, ruleVariableTwo)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .ruleEvents(List.of(firstRuleEvent, secondRuleEvent)) + .build() + assertEquals(13, valueMap.size.toLong()) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!) + .hasValue(wrap(dateFormat!!.format(dateEventCurrent))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventCurrent)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("3") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("3") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid_current") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid_current") + RuleVariableValueAssert.assertThatVariable(valueMap["due_date"]!!) + .hasValue(wrap(dateFormat!!.format(dateEventDueCurrent))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventDueCurrent)) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_one"]!!) + .hasValue("test_value_dataelement_one_current") + .isTypeOf(RuleValueType.TEXT).hasCandidates( + "test_value_dataelement_one_current", + "test_value_dataelement_one_second", "test_value_dataelement_one_first" + ) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_two"]!!) + .hasValue("test_value_dataelement_two_current") + .isTypeOf(RuleValueType.TEXT).hasCandidates( + "test_value_dataelement_two_current", + "test_value_dataelement_two_second", "test_value_dataelement_two_first" + ) + } + + @Test + @Throws(ParseException::class) + fun newestEventProgramStageVariableShouldContainValueFromNewestContextEvent() { + val ruleVariable: RuleVariable = RuleVariableNewestStageEvent.create( + "test_variable", + "test_dataelement", "test_program_stage_one", RuleValueType.TEXT, true, ArrayList() + ) + val dateEventOne = dateFormat!!.parse("2014-02-03") + val dateEventTwo = dateFormat!!.parse("2014-03-03") + val dateEventThree = dateFormat!!.parse("2015-02-03") + val dateEventCurrent = dateFormat!!.parse("2011-02-03") + val dateEventDueCurrent = dateFormat!!.parse("2011-02-03") + val eventOne = RuleEvent( + "test_event_uid_one", "test_program_stage_one", "", + RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, null, "", null, List.of( + RuleDataValue.create( + dateEventOne, "test_program_stage_one", + "test_dataelement", "test_value_one" + ) + ) + ) + val eventTwo = RuleEvent( + "test_event_uid_two", "test_program_stage_two", "", + RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, null, "", null, List.of( + RuleDataValue.create( + dateEventTwo, "test_program_stage_two", + "test_dataelement", "test_value_two" + ) + ) + ) + val eventThree = RuleEvent( + "test_event_uid_three", "test_program_stage_two", "", + RuleEvent.Status.ACTIVE, dateEventThree, dateEventThree, null, "", null, List.of( + RuleDataValue.create( + dateEventThree, "test_program_stage_two", + "test_dataelement", "test_value_three" + ) + ) + ) + val eventCurrent = RuleEvent( + "test_event_uid_current", "test_program_stage_one", "", + RuleEvent.Status.ACTIVE, dateEventCurrent, dateEventDueCurrent, null, "", null, List.of( + RuleDataValue.create( + dateEventCurrent, "test_program_stage_one", + "test_dataelement", "test_value_current" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(eventCurrent) + .ruleVariables(List.of(ruleVariable)) + .ruleEvents(List.of(eventOne, eventTwo, eventThree)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .build() + assertEquals(12, valueMap.size.toLong()) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!) + .hasValue(wrap(dateFormat!!.format(dateEventCurrent))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventCurrent)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("4") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("4") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid_current") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid_current") + RuleVariableValueAssert.assertThatVariable(valueMap["due_date"]!!) + .hasValue(wrap(dateFormat!!.format(dateEventDueCurrent))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventDueCurrent)) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable"]!!).hasValue("test_value_one") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_value_one", "test_value_current") + } + + @Test + @Throws(ParseException::class) + fun newestEventProgramStageVariableShouldNotContainAnyValues() { + val ruleVariable: RuleVariable = RuleVariableNewestStageEvent.create( + "test_variable", + "test_dataelement", "test_program_stage_one", RuleValueType.TEXT, true, ArrayList() + ) + val dateEventOne = dateFormat!!.parse("2014-03-03") + val dateEventTwo = dateFormat!!.parse("2015-02-03") + val ruleEventOne = RuleEvent( + "test_event_uid_one", "test_program_stage_two", "", + RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, null, "", null, List.of( + RuleDataValue.create( + dateEventOne, "test_program_stage_two", + "test_dataelement", "test_value_one" + ) + ) + ) + val ruleEventTwo = RuleEvent( + "test_event_uid_two", "test_program_stage_two", "", + RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, null, "", null, List.of( + RuleDataValue.create( + dateEventTwo, "test_program_stage_two", + "test_dataelement", "test_value_two" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(ruleEventTwo) + .ruleVariables(List.of(ruleVariable)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .ruleEvents(List.of(ruleEventOne)) + .build() + assertEquals(12, valueMap.size.toLong()) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!).hasValue( + wrap( + dateFormat!!.format(dateEventTwo) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventTwo)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("2") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("2") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid_two") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid_two") + RuleVariableValueAssert.assertThatVariable(valueMap["due_date"]!!).hasValue( + wrap( + dateFormat!!.format(dateEventTwo) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventTwo)) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable"]!!).hasValue(null) + .isTypeOf(RuleValueType.TEXT).hasCandidates() + } + + @Test + @Throws(ParseException::class) + fun previousEventVariableShouldContainValuesFromPreviousEvent() { + val ruleVariable: RuleVariable = RuleVariablePreviousEvent.create( + "test_variable", + "test_dataelement", RuleValueType.TEXT, true, ArrayList() + ) + val dateEventOne = dateFormat!!.parse("2014-02-03") + val dateEventTwo = dateFormat!!.parse("2014-03-03") + val dateEventThree = dateFormat!!.parse("2015-02-03") + val dateEventCurrent = dateFormat!!.parse("2014-05-03") + val ruleEventOne = RuleEvent( + "test_event_uid_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventOne, dateEventOne, null, "", null, List.of( + RuleDataValue.create( + dateEventOne, "test_program_stage_one", + "test_dataelement", "test_value_one" + ) + ) + ) + val ruleEventTwo = RuleEvent( + "test_event_uid_two", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventTwo, dateEventTwo, null, "", null, List.of( + RuleDataValue.create( + dateEventTwo, "test_program_stage_two", + "test_dataelement", "test_value_two" + ) + ) + ) + val ruleEventThree = RuleEvent( + "test_event_uid_three", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventThree, dateEventThree, null, "", null, List.of( + RuleDataValue.create( + dateEventThree, "test_program_stage_two", + "test_dataelement", "test_value_three" + ) + ) + ) + val ruleEventCurrent = RuleEvent( + "test_event_uid_current", "test_program_stage", "", + RuleEvent.Status.ACTIVE, dateEventCurrent, dateEventCurrent, null, "", null, List.of( + RuleDataValue.create( + dateEventCurrent, "test_program_stage_one", + "test_dataelement", "test_value_current" + ) + ) + ) + val valueMap = RuleVariableValueMapBuilder.target(ruleEventCurrent) + .ruleVariables(List.of(ruleVariable)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .ruleEvents(List.of(ruleEventOne, ruleEventTwo, ruleEventThree)) + .build() + assertEquals(12, valueMap.size.toLong()) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!) + .hasValue(wrap(dateFormat!!.format(dateEventCurrent))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventCurrent)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("4") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("4") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid_current") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid_current") + RuleVariableValueAssert.assertThatVariable(valueMap["due_date"]!!) + .hasValue(wrap(dateFormat!!.format(dateEventCurrent))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(dateEventCurrent)) + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable"]!!).hasValue("test_value_two") + .isTypeOf(RuleValueType.TEXT) + .hasCandidates("test_value_three", "test_value_current", "test_value_two", "test_value_one") + } + + @Test + @Throws(ParseException::class) + fun attributeVariableShouldContainValuesFromContextEnrollment() { + val ruleVariableOne: RuleVariable = RuleVariableAttribute.create( + "test_variable_one", + "test_attribute_one", RuleValueType.TEXT, true, ArrayList() + ) + val ruleVariableTwo: RuleVariable = RuleVariableAttribute.create( + "test_variable_two", + "test_attribute_two", RuleValueType.TEXT, true, ArrayList() + ) + val eventDate = dateFormat!!.parse("2015-01-01") + val enrollmentDate = dateFormat!!.parse("2014-03-01") + + // values from enrollment should end up in ruleVariables + val ruleEnrollment = RuleEnrollment.create( + "test_enrollment", + enrollmentDate, enrollmentDate, RuleEnrollment.Status.ACTIVE, "", null, List.of( + RuleAttributeValue.create("test_attribute_one", "test_attribute_value_one"), + RuleAttributeValue.create("test_attribute_two", "test_attribute_value_two") + ), "" + ) + + // values from context events should be ignored + val contextEvent = RuleEvent( + "test_context_event_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, eventDate, Date(), null, "", null, List.of( + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_one", "test_context_value_one" + ), + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_two", "test_context_value_two" + ) + ) + ) + val currentEvent = RuleEvent( + "test_event_uid", "test_program_stage", "", + RuleEvent.Status.ACTIVE, eventDate, eventDate, null, "", null, List.of( + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_one", "test_value_one" + ), + RuleDataValue.create( + eventDate, "test_program_stage", + "test_dataelement_two", "test_value_two" + ) + ) + ) + + // here we will expect correct values to be returned + val valueMap = RuleVariableValueMapBuilder.target(currentEvent) + .ruleEnrollment(ruleEnrollment) + .triggerEnvironment(TriggerEnvironment.SERVER) + .ruleVariables(List.of(ruleVariableOne, ruleVariableTwo)) + .ruleEvents(List.of(contextEvent)) + .build() + assertEquals(20, valueMap.size.toLong()) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue( + wrap( + dateFormat!!.format(Date()) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(Date())) + RuleVariableValueAssert.assertThatVariable(valueMap["event_date"]!!).hasValue( + wrap( + dateFormat!!.format(eventDate) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("2") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("2") + RuleVariableValueAssert.assertThatVariable(valueMap["event_id"]!!).hasValue("test_event_uid") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_event_uid") + RuleVariableValueAssert.assertThatVariable(valueMap["due_date"]!!).hasValue( + wrap( + dateFormat!!.format(eventDate) + ) + ) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_status"]!!) + .hasValue(wrap(RuleEnrollment.Status.ACTIVE.toString())) + .isTypeOf(RuleValueType.TEXT).hasCandidates(RuleEnrollment.Status.ACTIVE.toString()) + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_date"]!!) + .hasValue(wrap(dateFormat!!.format(enrollmentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(enrollmentDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_id"]!!).hasValue("test_enrollment") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_enrollment") + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(valueMap["incident_date"]!!) + .hasValue(wrap(dateFormat!!.format(enrollmentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(enrollmentDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["tei_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_one"]!!).hasValue("test_attribute_value_one") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_attribute_value_one") + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_two"]!!).hasValue("test_attribute_value_two") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_attribute_value_two") + } + + @Test + @Throws(ParseException::class) + fun ruleEnrollmentValuesShouldBePropagatedToMapCorrectly() { + val ruleVariableOne: RuleVariable = RuleVariableAttribute.create( + "test_variable_one", + "test_attribute_one", RuleValueType.NUMERIC, true, ArrayList() + ) + val ruleVariableTwo: RuleVariable = RuleVariableAttribute.create( + "test_variable_two", + "test_attribute_two", RuleValueType.TEXT, true, ArrayList() + ) + val ruleVariableThree: RuleVariable = RuleVariableCurrentEvent.create( + "test_variable_three", + "test_dataelement_one", RuleValueType.BOOLEAN, true, ArrayList() + ) + val currentDate = dateFormat!!.format(Date()) + val enrollmentDate = dateFormat!!.parse("2017-02-02") + val incidentDate = dateFormat!!.parse("2017-04-02") + val ruleEnrollment = RuleEnrollment.create( + "test_enrollment", incidentDate, + enrollmentDate, RuleEnrollment.Status.ACTIVE, "", null, List.of( + RuleAttributeValue.create("test_attribute_one", "test_attribute_value_one"), + RuleAttributeValue.create("test_attribute_two", "test_attribute_value_two"), + RuleAttributeValue.create("test_attribute_three", "test_attribute_value_three") + ), "" + ) + val ruleEventOne = RuleEvent( + "test_event_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, ArrayList() + ) + val ruleEventTwo = RuleEvent( + "test_event_two", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, ArrayList() + ) + val valueMap = RuleVariableValueMapBuilder.target(ruleEnrollment) + .ruleVariables(List.of(ruleVariableOne, ruleVariableTwo, ruleVariableThree)) + .ruleEvents(List.of(ruleEventOne, ruleEventTwo)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .build() + assertEquals(15, valueMap.size.toLong()) + RuleVariableValueAssert.assertThatVariable(valueMap["current_date"]!!).hasValue(wrap(currentDate)) + .isTypeOf(RuleValueType.TEXT).hasCandidates(currentDate) + RuleVariableValueAssert.assertThatVariable(valueMap["event_count"]!!).hasValue("2") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("2") + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_date"]!!) + .hasValue(wrap(dateFormat!!.format(enrollmentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(enrollmentDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_id"]!!).hasValue("test_enrollment") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_enrollment") + RuleVariableValueAssert.assertThatVariable(valueMap["enrollment_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(valueMap["incident_date"]!!) + .hasValue(wrap(dateFormat!!.format(incidentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(incidentDate)) + RuleVariableValueAssert.assertThatVariable(valueMap["tei_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_one"]!!).hasValue("test_attribute_value_one") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("test_attribute_value_one") + RuleVariableValueAssert.assertThatVariable(valueMap["test_variable_two"]!!).isTypeOf(RuleValueType.TEXT) + .hasValue("test_attribute_value_two").hasCandidates("test_attribute_value_two") + } + + @Test + @Throws(ParseException::class) + fun MultipleMapBuilderShoulCreateCorrectMapForEnrollmentAndEvents() { + val ruleVariableOne: RuleVariable = RuleVariableAttribute.create( + "test_variable_one", + "test_attribute_one", RuleValueType.NUMERIC, true, ArrayList() + ) + val ruleVariableTwo: RuleVariable = RuleVariableAttribute.create( + "test_variable_two", + "test_attribute_two", RuleValueType.TEXT, true, ArrayList() + ) + val ruleVariableThree: RuleVariable = RuleVariableCurrentEvent.create( + "test_variable_three", + "test_dataelement_one", RuleValueType.BOOLEAN, true, ArrayList() + ) + val currentDate = dateFormat!!.format(Date()) + val enrollmentDate = dateFormat!!.parse("2017-02-02") + val incidentDate = dateFormat!!.parse("2017-04-02") + val ruleEnrollment = RuleEnrollment.create( + "test_enrollment", incidentDate, + enrollmentDate, RuleEnrollment.Status.ACTIVE, "", null, List.of( + RuleAttributeValue.create("test_attribute_one", "test_attribute_value_one"), + RuleAttributeValue.create("test_attribute_two", "test_attribute_value_two"), + RuleAttributeValue.create("test_attribute_three", "test_attribute_value_three") + ), "" + ) + val now = LocalDate.now() + val eventOneDate = toDate(now.minusDays(1)) + val eventOneDueDate = toDate(now.minusDays(2)) + val eventTwoDate = toDate(now.minusDays(3)) + val eventTwoDueDate = toDate(now.minusDays(4)) + val ruleEventOne = RuleEvent( + "test_event_one", "test_program_stage", "", + RuleEvent.Status.ACTIVE, eventOneDate, eventOneDueDate, null, "", null, ArrayList() + ) + val ruleEventTwo = RuleEvent( + "test_event_two", "test_program_stage", "", + RuleEvent.Status.ACTIVE, eventTwoDate, eventTwoDueDate, null, "", null, ArrayList() + ) + val (enrollmentMap, eventMap) = RuleVariableValueMapBuilder.target(ruleEnrollment) + .ruleVariables(List.of(ruleVariableOne, ruleVariableTwo, ruleVariableThree)) + .ruleEvents(List.of(ruleEventOne, ruleEventTwo)) + .triggerEnvironment(TriggerEnvironment.SERVER) + .multipleBuild() + assertEquals(1, enrollmentMap.size.toLong()) + assertEquals(2, eventMap.size.toLong()) + val enrollmentValueMap = enrollmentMap[ruleEnrollment] + val eventOneValueMap = eventMap[ruleEventOne] + val eventTwoValueMap = eventMap[ruleEventTwo] + + // Enrollment + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap!!["current_date"]!!).hasValue(wrap(currentDate)) + .isTypeOf(RuleValueType.TEXT).hasCandidates(currentDate) + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["event_count"]!!).hasValue("2") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("2") + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["enrollment_date"]!!) + .hasValue(wrap(dateFormat!!.format(enrollmentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(enrollmentDate)) + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["enrollment_id"]!!).hasValue("test_enrollment") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_enrollment") + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["enrollment_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["incident_date"]!!) + .hasValue(wrap(dateFormat!!.format(incidentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(incidentDate)) + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["tei_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["test_variable_one"]!!) + .hasValue("test_attribute_value_one") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("test_attribute_value_one") + RuleVariableValueAssert.assertThatVariable(enrollmentValueMap["test_variable_two"]!!) + .isTypeOf(RuleValueType.TEXT) + .hasValue("test_attribute_value_two").hasCandidates("test_attribute_value_two") + + // Event one + RuleVariableValueAssert.assertThatVariable(eventOneValueMap!!["current_date"]!!).hasValue(wrap(currentDate)) + .isTypeOf(RuleValueType.TEXT).hasCandidates(currentDate) + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["event_count"]!!).hasValue("2") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("2") + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["enrollment_date"]!!) + .hasValue(wrap(dateFormat!!.format(enrollmentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(enrollmentDate)) + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["enrollment_id"]!!).hasValue("test_enrollment") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_enrollment") + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["enrollment_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["incident_date"]!!) + .hasValue(wrap(dateFormat!!.format(incidentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(incidentDate)) + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["tei_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["test_variable_one"]!!) + .hasValue("test_attribute_value_one") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("test_attribute_value_one") + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["test_variable_two"]!!).isTypeOf(RuleValueType.TEXT) + .hasValue("test_attribute_value_two").hasCandidates("test_attribute_value_two") + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["event_date"]!!) + .hasValue(wrap(dateFormat!!.format(eventOneDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventOneDate)) + RuleVariableValueAssert.assertThatVariable(eventOneValueMap["due_date"]!!) + .hasValue(wrap(dateFormat!!.format(eventOneDueDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventOneDueDate)) + + // Event two + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap!!["current_date"]!!).hasValue(wrap(currentDate)) + .isTypeOf(RuleValueType.TEXT).hasCandidates(currentDate) + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["event_count"]!!).hasValue("2") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("2") + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["enrollment_date"]!!) + .hasValue(wrap(dateFormat!!.format(enrollmentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(enrollmentDate)) + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["enrollment_id"]!!).hasValue("test_enrollment") + .isTypeOf(RuleValueType.TEXT).hasCandidates("test_enrollment") + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["enrollment_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["incident_date"]!!) + .hasValue(wrap(dateFormat!!.format(incidentDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(incidentDate)) + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["tei_count"]!!).hasValue("1") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("1") + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["test_variable_one"]!!) + .hasValue("test_attribute_value_one") + .isTypeOf(RuleValueType.NUMERIC).hasCandidates("test_attribute_value_one") + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["test_variable_two"]!!).isTypeOf(RuleValueType.TEXT) + .hasValue("test_attribute_value_two").hasCandidates("test_attribute_value_two") + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["event_date"]!!) + .hasValue(wrap(dateFormat!!.format(eventTwoDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventTwoDate)) + RuleVariableValueAssert.assertThatVariable(eventTwoValueMap["due_date"]!!) + .hasValue(wrap(dateFormat!!.format(eventTwoDueDate))) + .isTypeOf(RuleValueType.TEXT).hasCandidates(dateFormat!!.format(eventTwoDueDate)) + } + + @Test(expected = IllegalStateException::class) + fun buildShouldThrowOnDuplicateEvent() { + val ruleEvent = RuleEvent( + "test_event_two", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, ArrayList() + ) + RuleVariableValueMapBuilder.target(ruleEvent) + .ruleVariables(ArrayList()) + .ruleEvents(List.of(ruleEvent)) + .build() + } + + companion object { + private const val DATE_PATTERN = "yyyy-MM-dd" + private fun wrap(source: String): String { + return String.format(Locale.US, "%s", source) + } + + private fun toDate(date: LocalDate): Date { + return Date.from(date.atStartOfDay().toInstant(ZoneOffset.UTC)) + } + } +} diff --git a/src/test/java/org/hisp/dhis/rules/VariableValueTypeTest.kt b/src/test/java/org/hisp/dhis/rules/VariableValueTypeTest.kt index 2460393f..375f243f 100644 --- a/src/test/java/org/hisp/dhis/rules/VariableValueTypeTest.kt +++ b/src/test/java/org/hisp/dhis/rules/VariableValueTypeTest.kt @@ -43,16 +43,16 @@ class VariableValueTypeTest { val ruleVariable2: RuleVariable = RuleVariableCurrentEvent .create("test_variable2", "test_data_element2", RuleValueType.NUMERIC, true, ArrayList()) val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable, ruleVariable2)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, java.util.List.of( RuleDataValue.create(Date(), "", "test_data_element", "30"), RuleDataValue.create(Date(), "", "test_data_element2", "4") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("30", ruleEffects[0].data()) assertEquals(ruleAction, ruleEffects[0].ruleAction()) } @@ -67,16 +67,16 @@ class VariableValueTypeTest { val ruleVariable2: RuleVariable = RuleVariableCurrentEvent .create("test_variable2", "test_data_element2", RuleValueType.TEXT, true, ArrayList()) val ruleEngine = getRuleEngine(rule, java.util.List.of(ruleVariable, ruleVariable2)) - val ruleEvent = RuleEvent.create( - "test_event", "test_program_stage", - RuleEvent.Status.ACTIVE, Date(), Date(), "", null, + val ruleEvent = RuleEvent( + "test_event", "test_program_stage", "", + RuleEvent.Status.ACTIVE, Date(), Date(), null, "", null, listOf( RuleDataValue.create(Date(), "", "test_data_element", "30"), RuleDataValue.create(Date(), "", "test_data_element2", "4") - ), "", null + ) ) val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(0, ruleEffects.size.toLong()) + assertEquals(0, ruleEffects.size) } private fun getRuleEngine(rule: Rule, ruleVariables: List): RuleEngine { diff --git a/src/test/java/org/hisp/dhis/rules/models/CalculatedValueTest.kt b/src/test/java/org/hisp/dhis/rules/models/CalculatedValueTest.kt index 363267c9..b4446aac 100644 --- a/src/test/java/org/hisp/dhis/rules/models/CalculatedValueTest.kt +++ b/src/test/java/org/hisp/dhis/rules/models/CalculatedValueTest.kt @@ -48,26 +48,18 @@ class CalculatedValueTest { .organisationUnitCode("test_ou_code") .attributeValues(listOf()) .build() - val ruleEvent = RuleEvent.builder() - .event("test_event") - .programStage("test_program_stage") - .programStageName("") - .status(RuleEvent.Status.ACTIVE) - .eventDate(Date()) - .dueDate(Date()) - .organisationUnit("") - .organisationUnitCode("") - .dataValues( - java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", "test_value" - ) + val ruleEvent = RuleEvent(event = "test_event", programStage = "test_program_stage", + programStageName = "", status = RuleEvent.Status.ACTIVE, eventDate = Date(), dueDate = Date(), + organisationUnit = "", organisationUnitCode = "", completedDate = null, + dataValues = java.util.List.of( + RuleDataValue.create( + Date(), "test_program_stage", "test_data_element", "test_value" ) ) - .build() + ) val ruleEngine = ruleEngineBuilder.enrollment(enrollment).build() val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(i.toLong(), ruleEffects.size.toLong()) + assertEquals(i, ruleEffects.size) } @Test @@ -86,23 +78,15 @@ class CalculatedValueTest { .organisationUnitCode("test_ou_code") .attributeValues(listOf()) .build() - val ruleEvent = RuleEvent.builder() - .event("test_event") - .programStage("test_program_stage") - .programStageName("") - .status(RuleEvent.Status.ACTIVE) - .eventDate(Date()) - .dueDate(Date()) - .organisationUnit("") - .organisationUnitCode("") - .dataValues( - java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", "test_value" - ) + val ruleEvent = RuleEvent(event = "test_event", programStage = "test_program_stage", + programStageName = "", status = RuleEvent.Status.ACTIVE, eventDate = Date(), dueDate = Date(), + organisationUnit = "", organisationUnitCode = "", completedDate = null, + dataValues = java.util.List.of( + RuleDataValue.create( + Date(), "test_program_stage", "test_data_element", "test_value" ) ) - .build() + ) val ruleEngine = getRuleEngine(java.util.List.of(rule, rule2)).enrollment(enrollment).build() val ruleEffects = ruleEngine.evaluate(ruleEvent).call() assertEquals("4", ruleEffects[0].data()) @@ -141,26 +125,18 @@ class CalculatedValueTest { .organisationUnitCode("test_ou_code") .attributeValues(listOf()) .build() - val ruleEvent = RuleEvent.builder() - .event("test_event") - .programStage("test_program_stage") - .programStageName("") - .status(RuleEvent.Status.ACTIVE) - .eventDate(Date()) - .dueDate(Date()) - .organisationUnit("") - .organisationUnitCode("") - .dataValues( - java.util.List.of( - RuleDataValue.create( - Date(), "test_program_stage", "test_data_element", "test_value" - ) + val ruleEvent = RuleEvent(event = "test_event", programStage = "test_program_stage", + programStageName = "", status = RuleEvent.Status.ACTIVE, eventDate = Date(), dueDate = Date(), + organisationUnit = "", organisationUnitCode = "", completedDate = null, + dataValues = java.util.List.of( + RuleDataValue.create( + Date(), "test_program_stage", "test_data_element", "test_value" ) ) - .build() + ) val ruleEngine = ruleEngineBuilder.enrollment(enrollment).build() val ruleEffects = ruleEngine.evaluate(ruleEvent).call() - assertEquals(1, ruleEffects.size.toLong()) + assertEquals(1, ruleEffects.size) assertEquals("4", ruleEffects[0].data()) assertEquals(sendMessageAction, ruleEffects[0].ruleAction()) } diff --git a/src/test/java/org/hisp/dhis/rules/models/RuleEventTest.java b/src/test/java/org/hisp/dhis/rules/models/RuleEventTest.java deleted file mode 100644 index 337a669a..00000000 --- a/src/test/java/org/hisp/dhis/rules/models/RuleEventTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.hisp.dhis.rules.models; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; - -import static org.junit.Assert.assertEquals; - -@RunWith( JUnit4.class ) -public class RuleEventTest -{ - private static final String DATE_PATTERN = "yyyy-MM-dd"; - - @Test( expected = NullPointerException.class ) - public void createShouldThrowExceptionIfListOfDataValuesIsNull() - { - RuleEvent.create( "test_event", "test_programstage", RuleEvent.Status.ACTIVE, new Date(), new Date(), - null, null, null, "", null); - - } - - @Test( expected = UnsupportedOperationException.class ) - public void createShouldPropagateImmutableList() - { - RuleDataValue ruleDataValue = RuleDataValue.MOCK; - - List ruleDataValues = new ArrayList<>(); - ruleDataValues.add( ruleDataValue ); - - RuleEvent ruleEvent = RuleEvent.create( "test_event_uid", "test_stage_uid", - RuleEvent.Status.ACTIVE, new Date(), new Date(), "", "", ruleDataValues, "", null); - - // add another data value - ruleDataValues.add( ruleDataValue ); - - assertEquals( 1 , ruleEvent.dataValues().size() ); - assertEquals( ruleDataValue , ruleEvent.dataValues().get( 0 ) ); - - ruleEvent.dataValues().add( ruleDataValue ); - } - - @Test - public void createShouldPropagateValuesCorrectly() - { - RuleDataValue ruleDataValue = RuleDataValue.MOCK; - - List ruleDataValues = new ArrayList<>(); - ruleDataValues.add( ruleDataValue ); - - Date eventDate = new Date(); - Date dueDate = new Date(); - - RuleEvent ruleEvent = RuleEvent.create( "test_event_uid", "test_stage_uid", - RuleEvent.Status.ACTIVE, eventDate, dueDate, "", "", ruleDataValues, "", null); - - assertEquals( "test_event_uid" , ruleEvent.event() ); - assertEquals( RuleEvent.Status.ACTIVE , ruleEvent.status() ); - assertEquals( "test_stage_uid" , ruleEvent.programStage() ); - assertEquals( eventDate , ruleEvent.eventDate() ); - assertEquals( dueDate , ruleEvent.dueDate() ); - - assertEquals( 1 , ruleEvent.dataValues().size() ); - assertEquals( ruleDataValue , ruleEvent.dataValues().get( 0 ) ); - } - - @Test - public void eventDateComparatorTest() - throws ParseException - { - SimpleDateFormat dateFormat = new SimpleDateFormat( DATE_PATTERN, Locale.US ); - List ruleEvents = new ArrayList<>(List.of( - RuleEvent.create( "test_event_one", "test_program_stage_one", RuleEvent.Status.ACTIVE, - dateFormat.parse( "2014-02-11" ), dateFormat.parse( "2014-02-11" ), "", null, - new ArrayList<>(), "", null), - RuleEvent.create( "test_event_two", "test_program_stage_two", RuleEvent.Status.ACTIVE, - dateFormat.parse( "2017-03-22" ), dateFormat.parse( "2017-03-22" ), "", null, - new ArrayList<>(), "", null) )); - - ruleEvents.sort(RuleEvent.EVENT_DATE_COMPARATOR); - - assertEquals( "test_event_two" , ruleEvents.get( 0 ).event() ); - assertEquals( "test_event_one" , ruleEvents.get( 1 ).event() ); - } -} diff --git a/src/test/java/org/hisp/dhis/rules/models/RuleEventTest.kt b/src/test/java/org/hisp/dhis/rules/models/RuleEventTest.kt new file mode 100644 index 00000000..a5dd6616 --- /dev/null +++ b/src/test/java/org/hisp/dhis/rules/models/RuleEventTest.kt @@ -0,0 +1,53 @@ +package org.hisp.dhis.rules.models + +import java.text.SimpleDateFormat +import java.util.* +import kotlin.test.Test +import kotlin.test.assertEquals + +class RuleEventTest { + @Test + fun createShouldPropagateValuesCorrectly() { + val ruleDataValue = RuleDataValue.MOCK + val ruleDataValues: MutableList = ArrayList() + ruleDataValues.add(ruleDataValue) + val eventDate = Date() + val dueDate = Date() + val (event, programStage, _, status, eventDate1, dueDate1, _, _, _, dataValues) = RuleEvent( + "test_event_uid", "test_stage_uid", "", + RuleEvent.Status.ACTIVE, eventDate, dueDate, null, "", "", ruleDataValues + ) + assertEquals("test_event_uid", event) + assertEquals(RuleEvent.Status.ACTIVE, status) + assertEquals("test_stage_uid", programStage) + assertEquals(eventDate, eventDate1) + assertEquals(dueDate, dueDate1) + assertEquals(1, dataValues.size.toLong()) + assertEquals(ruleDataValue, dataValues[0]) + } + + @Test + fun eventDateComparatorTest() { + val dateFormat = SimpleDateFormat(DATE_PATTERN, Locale.US) + val ruleEvents: List = + listOf( + RuleEvent( + "test_event_one", "test_program_stage_one", "", RuleEvent.Status.ACTIVE, + dateFormat.parse("2014-02-11"), dateFormat.parse("2014-02-11"), null, "", null, + emptyList() + ), + RuleEvent( + "test_event_two", "test_program_stage_two", "", RuleEvent.Status.ACTIVE, + dateFormat.parse("2017-03-22"), dateFormat.parse("2017-03-22"), null, "", null, + emptyList() + ) + ) + val reversed = ruleEvents.sortedBy { e -> e.eventDate }.reversed() + assertEquals("test_event_two", reversed[0].event()) + assertEquals("test_event_one", reversed[1].event()) + } + + companion object { + private const val DATE_PATTERN = "yyyy-MM-dd" + } +}