From 8792ae7737c84c5903ebd6e14a56e5cbc3ddbd32 Mon Sep 17 00:00:00 2001 From: Yeser Amer Date: Mon, 13 May 2019 10:44:44 +0200 Subject: [PATCH] [Drools-3838] Improve error reporting in scenario result (#2335) * [DROOLS-3838] BackEnd part import * [DROOLS-3838] Cleanup * Unify assertion framework (#1) --- .../api/model/FactMappingValue.java | 34 ++++++++++++++++--- .../api/model/FactMappingValueStatus.java | 24 +++++++++++++ .../api/model/Scenario.java | 31 +++++------------ .../api/model/Simulation.java | 4 --- .../api/model/FactMappingValueTest.java | 30 ++++++++++++++++ .../api/model/ScenarioTest.java | 16 --------- .../backend/fluent/ValidateFactCommand.java | 2 +- .../backend/runner/AbstractRunnerHelper.java | 11 ++++-- .../runner/DMNScenarioRunnerHelper.java | 13 +++---- .../runner/RuleScenarioRunnerHelper.java | 8 ++--- .../backend/runner/model/ResultWrapper.java | 16 +++++++-- .../backend/fluent/ConditionFilterTest.java | 2 +- .../fluent/ValidateFactCommandTest.java | 6 ++-- .../runner/DMNScenarioRunnerHelperTest.java | 3 +- .../runner/RuleScenarioRunnerHelperTest.java | 12 ++++--- .../runner/model/ResultWrapperTest.java | 4 +-- 16 files changed, 140 insertions(+), 76 deletions(-) create mode 100644 drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValueStatus.java diff --git a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValue.java b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValue.java index cd14af57e13..c342d4d2dff 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValue.java +++ b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValue.java @@ -28,7 +28,11 @@ public class FactMappingValue { private ExpressionIdentifier expressionIdentifier; private Object rawValue; @XStreamOmitField - private boolean error = false; + private FactMappingValueStatus status = FactMappingValueStatus.SUCCESS; + @XStreamOmitField + private Object errorValue; + @XStreamOmitField + private String exceptionMessage; public FactMappingValue() { } @@ -63,11 +67,31 @@ FactMappingValue cloneFactMappingValue() { return cloned; } - public boolean isError() { - return error; + public FactMappingValueStatus getStatus() { + return status; + } + + public Object getErrorValue() { + return errorValue; + } + + public void setErrorValue(Object errorValue) { + this.errorValue = errorValue; + this.status = FactMappingValueStatus.FAILED_WITH_ERROR; + } + + public String getExceptionMessage() { + return exceptionMessage; + } + + public void setExceptionMessage(String exceptionMessage) { + this.exceptionMessage = exceptionMessage; + this.status = FactMappingValueStatus.FAILED_WITH_EXCEPTION; } - public void setError(boolean error) { - this.error = error; + public void resetStatus() { + this.status = FactMappingValueStatus.SUCCESS; + this.exceptionMessage = null; + this.errorValue = null; } } diff --git a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValueStatus.java b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValueStatus.java new file mode 100644 index 00000000000..356ea7861c2 --- /dev/null +++ b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/FactMappingValueStatus.java @@ -0,0 +1,24 @@ + +/* + * Copyright 2019 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.drools.scenariosimulation.api.model; + +public enum FactMappingValueStatus { + + SUCCESS, + FAILED_WITH_ERROR, + FAILED_WITH_EXCEPTION +} \ No newline at end of file diff --git a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Scenario.java b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Scenario.java index 2e8bca282a7..a83bc46baa1 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Scenario.java +++ b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Scenario.java @@ -34,6 +34,10 @@ public class Scenario { */ private final List factMappingValues = new ArrayList<>(); + /** + * Not used, to be removed. + */ + @Deprecated private SimulationDescriptor simulationDescriptor = new SimulationDescriptor(); public Scenario() { @@ -46,11 +50,7 @@ public Scenario(SimulationDescriptor simulationDescriptor) { /** * Returns an unmodifiable list wrapping the backed one *

- * NOTE: list order could not be aligned to factMapping order. Use {@link Scenario#sort()} before call this method - * to ensure the order. - * Best way to have ordered factMappingValues is to iterate over {@link SimulationDescriptor#factMappings} and use - * {@link #getFactMappingValue(FactIdentifier, ExpressionIdentifier)} - * @return not modifiable list of FactMappingValues + * NOTE: list order could not be aligned to factMapping order. */ public List getUnmodifiableFactMappingValues() { return Collections.unmodifiableList(factMappingValues); @@ -88,15 +88,8 @@ public Optional getFactMappingValue(FactIdentifier factIdentif e.getExpressionIdentifier().equals(expressionIdentifier)).findFirst(); } - public Optional getFactMappingValueByIndex(int index) { - FactMapping factMappingByIndex; - try { - factMappingByIndex = simulationDescriptor.getFactMappingByIndex(index); - } catch (IndexOutOfBoundsException e) { - throw new IllegalArgumentException( - new StringBuilder().append("Impossible to retrieve FactMapping at index ").append(index).toString(), e); - } - return getFactMappingValue(factMappingByIndex.getFactIdentifier(), factMappingByIndex.getExpressionIdentifier()); + public Optional getFactMappingValue(FactMapping factMapping) { + return getFactMappingValue(factMapping.getFactIdentifier(), factMapping.getExpressionIdentifier()); } public List getFactMappingValuesByFactIdentifier(FactIdentifier factIdentifier) { @@ -120,16 +113,8 @@ public Collection getFactNames() { return factMappingValues.stream().map(e -> e.getFactIdentifier().getName()).collect(toSet()); } - public void sort() { - factMappingValues.sort((a, b) -> { - Integer aIndex = simulationDescriptor.getIndexByIdentifier(a.getFactIdentifier(), a.getExpressionIdentifier()); - Integer bIndex = simulationDescriptor.getIndexByIdentifier(b.getFactIdentifier(), b.getExpressionIdentifier()); - return aIndex.compareTo(bIndex); - }); - } - public void resetErrors() { - factMappingValues.forEach(elem -> elem.setError(false)); + factMappingValues.forEach(elem -> elem.resetStatus()); } Scenario cloneScenario() { diff --git a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Simulation.java b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Simulation.java index 34d5ade3d6c..e3e2251c9ef 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Simulation.java +++ b/drools-scenario-simulation/drools-scenario-simulation-api/src/main/java/org/drools/scenariosimulation/api/model/Simulation.java @@ -112,10 +112,6 @@ public void clearScenarios() { scenarios.clear(); } - public void sort() { - scenarios.forEach(Scenario::sort); - } - public void resetErrors() { scenarios.forEach(Scenario::resetErrors); } diff --git a/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/FactMappingValueTest.java b/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/FactMappingValueTest.java index 08f5f1f29e8..38be9c64039 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/FactMappingValueTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/FactMappingValueTest.java @@ -18,6 +18,7 @@ import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; public class FactMappingValueTest { @@ -32,4 +33,33 @@ public void emptyFactMappingValue() { .isInstanceOf(NullPointerException.class) .hasMessage("ExpressionIdentifier has to be not null"); } + + @Test + public void resetStatus() { + FactMappingValue value = new FactMappingValue(); + value.resetStatus(); + assertThat(value.getStatus()).isEqualTo(FactMappingValueStatus.SUCCESS); + assertThat(value.getExceptionMessage()).isNull(); + assertThat(value.getErrorValue()).isNull(); + } + + @Test + public void setErrorValue() { + String errorValue = "value"; + FactMappingValue value = new FactMappingValue(); + value.setErrorValue(errorValue); + assertThat(value.getStatus()).isEqualTo(FactMappingValueStatus.FAILED_WITH_ERROR); + assertThat(value.getExceptionMessage()).isNull(); + assertThat(value.getErrorValue()).isEqualTo(errorValue); + } + + @Test + public void setExceptionMessage() { + String exceptionValue = "Exception"; + FactMappingValue value = new FactMappingValue(); + value.setExceptionMessage(exceptionValue); + assertThat(value.getStatus()).isEqualTo(FactMappingValueStatus.FAILED_WITH_EXCEPTION); + assertThat(value.getExceptionMessage()).isEqualTo(exceptionValue); + assertThat(value.getErrorValue()).isNull(); + } } \ No newline at end of file diff --git a/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/ScenarioTest.java b/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/ScenarioTest.java index e88fcd0d5f4..0ad0119cd34 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/ScenarioTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-api/src/test/java/org/drools/scenariosimulation/api/model/ScenarioTest.java @@ -22,7 +22,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; public class ScenarioTest { @@ -92,19 +91,4 @@ public void addOrUpdateMappingValue() { assertEquals(factMappingValue, factMappingValue1); assertEquals(factMappingValue1.getRawValue(), value2); } - - @Test - public void sortTest() { - ExpressionIdentifier expressionIdentifier2 = ExpressionIdentifier.create("Test expression 2", FactMappingType.GIVEN); - simulationDescriptor.addFactMapping(factIdentifier, expressionIdentifier); - simulationDescriptor.addFactMapping(factIdentifier, expressionIdentifier2); - scenario.addMappingValue(factIdentifier, expressionIdentifier2, "Test 2"); - FactMappingValue factMappingValue1 = scenario.addMappingValue(factIdentifier, this.expressionIdentifier, "Test"); - - assertEquals(scenario.getUnmodifiableFactMappingValues().get(1), factMappingValue1); - - scenario.sort(); - assertNotEquals(scenario.getUnmodifiableFactMappingValues().get(1), factMappingValue1); - assertEquals(scenario.getUnmodifiableFactMappingValues().get(0), factMappingValue1); - } } \ No newline at end of file diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommand.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommand.java index fa7d9c4a98e..5bd4719b8fc 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommand.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommand.java @@ -39,7 +39,7 @@ public Void execute(Context context) { if (objects.size() > 0) { factToCheck.forEach(fact -> fact.getScenarioResult().setResult(true)); } else { - factToCheck.forEach(fact -> fact.getScenarioResult().getFactMappingValue().setError(true)); + factToCheck.forEach(fact -> fact.getScenarioResult().getFactMappingValue().setExceptionMessage("There is no instance which satisfies the expected conditions")); } return null; } diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/AbstractRunnerHelper.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/AbstractRunnerHelper.java index a0e429dde85..159f19a1775 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/AbstractRunnerHelper.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/AbstractRunnerHelper.java @@ -108,7 +108,7 @@ public ResultWrapper getDirectMapping(Map, Object> params) return ResultWrapper.createResult(entry.getValue()); } } - return ResultWrapper.createErrorResult(); + return ResultWrapper.createErrorResult(null, null); } public List extractExpectedValues(List factMappingValues) { @@ -179,7 +179,7 @@ public Map, Object> getParamsForBean(SimulationDescriptor simulatio factMappingValue.getRawValue()); paramsForBean.put(pathToField, value); } catch (IllegalArgumentException e) { - factMappingValue.setError(true); + factMappingValue.setExceptionMessage(e.getMessage()); throw new ScenarioException(e.getMessage(), e); } } @@ -203,7 +203,12 @@ public void validateAssertion(List scenarioResults, Scenario sce protected ScenarioResult fillResult(FactMappingValue expectedResult, FactIdentifier factIdentifier, Supplier> resultSupplier) { ResultWrapper resultValue = resultSupplier.get(); - expectedResult.setError(!resultValue.isSatisfied()); + if (!resultValue.isSatisfied()) { + expectedResult.setErrorValue(resultValue.getResult()); + + } else { + expectedResult.resetStatus(); + } return new ScenarioResult(factIdentifier, expectedResult, resultValue.getResult()).setResult(resultValue.isSatisfied()); } diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelper.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelper.java index 078e351020d..18c4ee4ae3a 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelper.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelper.java @@ -120,9 +120,9 @@ protected ResultWrapper getSingleFactValueResult(FactMapping factMapping, DMNDecisionResult decisionResult, ExpressionEvaluator expressionEvaluator) { Object resultRaw = decisionResult.getResult(); - - if (!SUCCEEDED.equals(decisionResult.getEvaluationStatus())) { - return createErrorResult(); + final DMNDecisionResult.DecisionEvaluationStatus evaluationStatus = decisionResult.getEvaluationStatus(); + if (!SUCCEEDED.equals(evaluationStatus)) { + return createErrorResult(SUCCEEDED, evaluationStatus); } for (ExpressionElement expressionElement : factMapping.getExpressionElementsWithoutClass()) { @@ -135,12 +135,13 @@ protected ResultWrapper getSingleFactValueResult(FactMapping factMapping, Class resultClass = resultRaw != null ? resultRaw.getClass() : null; + Object expectedResultRaw = expectedResult.getRawValue(); try { - return expressionEvaluator.evaluateUnaryExpression(expectedResult.getRawValue(), resultRaw, resultClass) ? + return expressionEvaluator.evaluateUnaryExpression(expectedResultRaw, resultRaw, resultClass) ? createResult(resultRaw) : - createErrorResult(); + createErrorResult(resultRaw, expectedResultRaw); } catch (Exception e) { - expectedResult.setError(true); + expectedResult.setExceptionMessage(e.getMessage()); throw new ScenarioException(e.getMessage(), e); } } diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelper.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelper.java index 80bd68141a4..af2549c9fdc 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelper.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelper.java @@ -140,13 +140,13 @@ protected Function createExtractorFunction(ExpressionEval List pathToValue = factMapping.getExpressionElementsWithoutClass().stream().map(ExpressionElement::getStep).collect(toList()); ScenarioBeanWrapper scenarioBeanWrapper = ScenarioBeanUtil.navigateToObject(objectToCheck, pathToValue, false); Object resultValue = scenarioBeanWrapper.getBean(); - + Object expectedResultValue = expectedResult.getRawValue(); try { - return expressionEvaluator.evaluateUnaryExpression(expectedResult.getRawValue(), resultValue, scenarioBeanWrapper.getBeanClass()) ? + return expressionEvaluator.evaluateUnaryExpression(expectedResultValue, resultValue, scenarioBeanWrapper.getBeanClass()) ? createResult(resultValue) : - createErrorResult(); + createErrorResult(resultValue, expectedResultValue); } catch (Exception e) { - expectedResult.setError(true); + expectedResult.setExceptionMessage(e.getMessage()); throw new ScenarioException(e.getMessage(), e); } }; diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapper.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapper.java index 350ab2cfeb7..06605b9c692 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapper.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/main/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapper.java @@ -27,18 +27,26 @@ public class ResultWrapper { private final boolean satisfied; private final T result; + private final T expected; private ResultWrapper(T result, boolean satisfied) { this.satisfied = satisfied; this.result = result; + this.expected = null; + } + + private ResultWrapper(T result, T expected) { + this.satisfied = false; + this.result = result; + this.expected = expected; } public static ResultWrapper createResult(T result) { return new ResultWrapper<>(result, true); } - public static ResultWrapper createErrorResult() { - return new ResultWrapper<>(null, false); + public static ResultWrapper createErrorResult(T result, T expected) { + return new ResultWrapper<>(result, expected); } public boolean isSatisfied() { @@ -49,6 +57,10 @@ public T getResult() { return result; } + public T getExpected() { + return expected; + } + public T orElse(T defaultValue) { return satisfied ? result : defaultValue; } diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ConditionFilterTest.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ConditionFilterTest.java index eb8462ef725..9977719d09e 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ConditionFilterTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ConditionFilterTest.java @@ -40,7 +40,7 @@ public void acceptTest() { Assert.assertFalse(conditionFilter.accept(1)); Assert.assertTrue(conditionFilter.accept("String")); - Function alwaysNotMatchFunction = object -> ResultWrapper.createErrorResult(); + Function alwaysNotMatchFunction = object -> ResultWrapper.createErrorResult(null, null); ConditionFilter conditionFilterFail = new ConditionFilter(asList(new FactCheckerHandle(String.class, alwaysNotMatchFunction, scenarioResult))); Assert.assertFalse(conditionFilterFail.accept("String")); } diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommandTest.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommandTest.java index 45d13678f1b..9937649acbd 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommandTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/fluent/ValidateFactCommandTest.java @@ -20,6 +20,7 @@ import java.util.function.Function; import org.drools.scenariosimulation.api.model.FactMappingValue; +import org.drools.scenariosimulation.api.model.FactMappingValueStatus; import org.drools.scenariosimulation.backend.runner.model.ResultWrapper; import org.drools.scenariosimulation.backend.runner.model.ScenarioResult; import org.junit.Test; @@ -66,11 +67,10 @@ public void executeTest() { reset(scenarioResult); - boolean expectedResult = true; when(kieSession.getObjects(any(ObjectFilter.class))).thenReturn(Collections.emptyList()); when(scenarioResult.getFactMappingValue()).thenReturn(factMappingValue); - when(factMappingValue.isError()).thenReturn(expectedResult); + when(factMappingValue.getStatus()).thenReturn(FactMappingValueStatus.FAILED_WITH_EXCEPTION); validateFactCommand.execute(registryContext); - verify(scenarioResult, times(0)).setResult(expectedResult); + verify(scenarioResult, times(0)).setResult(anyBoolean()); } } \ No newline at end of file diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelperTest.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelperTest.java index 6fcb6f2ee03..376601a66f2 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelperTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/DMNScenarioRunnerHelperTest.java @@ -32,6 +32,7 @@ import org.drools.scenariosimulation.api.model.FactMapping; import org.drools.scenariosimulation.api.model.FactMappingType; import org.drools.scenariosimulation.api.model.FactMappingValue; +import org.drools.scenariosimulation.api.model.FactMappingValueStatus; import org.drools.scenariosimulation.api.model.Scenario; import org.drools.scenariosimulation.api.model.ScenarioWithIndex; import org.drools.scenariosimulation.api.model.Simulation; @@ -184,7 +185,7 @@ public void verifyConditions() { newScenarioRunnerData, mock(ExpressionEvaluator.class), requestContextMock); - assertTrue(newScenarioRunnerData.getResults().get(0).getFactMappingValue().isError()); + assertEquals(newScenarioRunnerData.getResults().get(0).getFactMappingValue().getStatus(), FactMappingValueStatus.FAILED_WITH_ERROR); } @SuppressWarnings("unchecked") diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelperTest.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelperTest.java index 8fc5b4389e9..fdec62785f0 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelperTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/RuleScenarioRunnerHelperTest.java @@ -28,6 +28,7 @@ import org.drools.scenariosimulation.api.model.FactMapping; import org.drools.scenariosimulation.api.model.FactMappingType; import org.drools.scenariosimulation.api.model.FactMappingValue; +import org.drools.scenariosimulation.api.model.FactMappingValueStatus; import org.drools.scenariosimulation.api.model.Scenario; import org.drools.scenariosimulation.api.model.Simulation; import org.drools.scenariosimulation.backend.expression.BaseExpressionEvaluator; @@ -39,7 +40,6 @@ import org.drools.scenariosimulation.backend.runner.model.ScenarioGiven; import org.drools.scenariosimulation.backend.runner.model.ScenarioResult; import org.drools.scenariosimulation.backend.runner.model.ScenarioRunnerData; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -191,7 +191,7 @@ public void getScenarioResultsTest() { List scenario1Results = runnerHelper.getScenarioResultsFromGivenFacts(simulation.getSimulationDescriptor(), scenario1Outputs, input1, expressionEvaluator); assertEquals(1, scenario1Results.size()); - assertFalse(scenario1Outputs.get(0).getExpectedResult().get(0).isError()); + assertEquals(scenario1Outputs.get(0).getExpectedResult().get(0).getStatus(), FactMappingValueStatus.SUCCESS); List scenario2Inputs = runnerHelper.extractGivenValues(simulation.getSimulationDescriptor(), scenario2.getUnmodifiableFactMappingValues(), @@ -207,7 +207,7 @@ public void getScenarioResultsTest() { List scenario2Results = runnerHelper.getScenarioResultsFromGivenFacts(simulation.getSimulationDescriptor(), scenario2Outputs, input2, expressionEvaluator); assertEquals(1, scenario2Results.size()); - assertFalse(scenario2Outputs.get(0).getExpectedResult().get(0).isError()); + assertEquals(scenario1Outputs.get(0).getExpectedResult().get(0).getStatus(), FactMappingValueStatus.SUCCESS); List newFact = Collections.singletonList(new ScenarioExpect(personFactIdentifier, Collections.emptyList(), true)); List scenario2NoResults = runnerHelper.getScenarioResultsFromGivenFacts(simulation.getSimulationDescriptor(), newFact, input2, expressionEvaluator); @@ -219,9 +219,11 @@ public void getScenarioResultsTest() { ScenarioGiven newInput = new ScenarioGiven(personFactIdentifier, person); List scenario3Results = runnerHelper.getScenarioResultsFromGivenFacts(simulation.getSimulationDescriptor(), scenario1Outputs, newInput, expressionEvaluator); - assertTrue(scenario1Outputs.get(0).getExpectedResult().get(0).isError()); + assertEquals(scenario1Outputs.get(0).getExpectedResult().get(0).getStatus(), FactMappingValueStatus.FAILED_WITH_ERROR); assertEquals(1, scenario3Results.size()); + assertEquals(person.getFirstName(), scenario3Results.get(0).getResultValue().get()); + assertEquals("NAME", scenario3Results.get(0).getFactMappingValue().getRawValue()); } @Test @@ -306,7 +308,7 @@ public void getParamsForBeanTest() { } catch (ScenarioException ignored) { } - Assert.assertTrue(factMappingValue.isError()); + assertEquals(factMappingValue.getStatus(), FactMappingValueStatus.FAILED_WITH_EXCEPTION); } @Test diff --git a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapperTest.java b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapperTest.java index 2d390589a94..3185f948fbb 100644 --- a/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapperTest.java +++ b/drools-scenario-simulation/drools-scenario-simulation-backend/src/test/java/org/drools/scenariosimulation/backend/runner/model/ResultWrapperTest.java @@ -26,14 +26,14 @@ public class ResultWrapperTest { @Test public void orElse() { assertEquals((Integer) 1, ResultWrapper.createResult(1).orElse(3)); - assertEquals(3, ResultWrapper.createErrorResult().orElse(3)); + assertEquals(3, ResultWrapper.createErrorResult(null, null).orElse(3)); assertNull(ResultWrapper.createResult(null).orElse(3)); } @Test public void orElseGet() { assertEquals((Integer) 1, ResultWrapper.createResult(1).orElseGet(() -> 3)); - assertEquals(3, ResultWrapper.createErrorResult().orElseGet(() -> 3)); + assertEquals(3, ResultWrapper.createErrorResult(null, null).orElseGet(() -> 3)); assertNull(ResultWrapper.createResult(null).orElseGet(() -> 3)); } } \ No newline at end of file