/*
* Copyright 2015 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.
*
* 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.kie.server.integrationtests.dmn;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.dmn.api.core.DMNContext;
import org.kie.dmn.api.core.DMNDecisionResult;
import org.kie.dmn.api.core.DMNResult;
import org.kie.server.api.model.ReleaseId;
import org.kie.server.api.model.ServiceResponse;
import org.kie.server.api.model.ServiceResponse.ResponseType;
import java.math.BigDecimal;
import java.util.Map;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.is;
import org.kie.server.integrationtests.shared.KieServerDeployer;
public class DMNInputDataStringIntegrationTest
extends DMNKieServerBaseIntegrationTest {
private static final ReleaseId kjar1 = new ReleaseId(
"org.kie.server.testing", "input-data-string",
"1.0.0.Final" );
private static final String CONTAINER_ID = "input-data-string";
private static final String MODEL_NAMESPACE = "https://github.com/kiegroup/kie-dmn/input-data-string";
private static final String MODEL_NAME = "input-data-string";
@BeforeClass
public static void deployArtifacts() {
KieServerDeployer.buildAndDeployCommonMavenParent();
KieServerDeployer.buildAndDeployMavenProject( ClassLoader.class.getResource( "/kjars-sources/input-data-string" ).getFile() );
kieContainer = KieServices.Factory.get().newKieContainer(kjar1);
createContainer(CONTAINER_ID, kjar1);
}
@Override
protected void addExtraCustomClasses(Map<String, Class<?>> extraClasses) throws Exception {
// no extra classes.
}
// See org.kie.dmn.core.DMNInputRuntimeTest
@Test
public void test_evaluateAll() {
DMNContext dmnContext = dmnClient.newContext();
dmnContext.set( "Full Name", "John Doe" );
ServiceResponse<DMNResult> evaluateAll = dmnClient.evaluateAll(CONTAINER_ID, dmnContext);
assertEquals(ResponseType.SUCCESS, evaluateAll.getType());
DMNResult dmnResult = evaluateAll.getResult();
assertThat( dmnResult.getDecisionResults().size(), is( 1 ) );
assertThat( dmnResult.getDecisionResultByName( "Greeting Message" ).getResult(), is( "Hello John Doe" ) );
DMNContext result = dmnResult.getContext();
assertThat( result.get( "Greeting Message" ), is( "Hello John Doe" ) );
}
// See org.kie.dmn.core.DMNInputRuntimeTest
@Test
public void testInputStringEvaluateDecisionByName() {
DMNContext dmnContext = dmnClient.newContext();
dmnContext.set( "Full Name", "John Doe" );
DMNResult dmnResult = dmnClient.evaluateDecisionByName( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, "Greeting Message", dmnContext ).getResult();
assertThat( dmnResult.getDecisionResults().size(), is(1) );
assertThat( dmnResult.getDecisionResultByName( "Greeting Message" ).getResult(), is( "Hello John Doe" ) );
DMNContext result = dmnResult.getContext();
assertThat( result.get( "Greeting Message" ), is( "Hello John Doe" ) );
dmnResult = dmnClient.evaluateDecisionByName( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, "nonExistantName", dmnContext ).getResult();
assertThat( dmnResult.getDecisionResults().size(), is(1) );
assertThat( dmnResult.getDecisionResultByName( "Greeting Message" ).getEvaluationStatus(), is( DMNDecisionResult.DecisionEvaluationStatus.NOT_EVALUATED ) );
dmnResult = dmnClient.evaluateDecisionByName( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, "", dmnContext ).getResult();
assertThat( dmnResult.getDecisionResults().size(), is(1) );
assertThat( dmnResult.getDecisionResultByName( "Greeting Message" ).getEvaluationStatus(), is( DMNDecisionResult.DecisionEvaluationStatus.NOT_EVALUATED ) );
// difference with org.kie.dmn.core.DMNInputRuntimeTest:
try {
dmnResult = dmnClient.evaluateDecisionByName( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, null, dmnContext ).getResult();
fail("There is no point in calling evaluateDecisionByName with null parameter");
} catch ( RuntimeException e ) {
// Ok.
}
}
// See org.kie.dmn.core.DMNInputRuntimeTest
@Test
public void testInputStringEvaluateDecisionById() {
DMNContext dmnContext = dmnClient.newContext();
dmnContext.set( "Full Name", "John Doe" );
DMNResult dmnResult = dmnClient.evaluateDecisionById( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, "d_GreetingMessage", dmnContext ).getResult();
assertThat( dmnResult.getDecisionResults().size(), is(1) );
assertThat( dmnResult.getDecisionResultById( "d_GreetingMessage" ).getResult(), is( "Hello John Doe" ) );
DMNContext result = dmnResult.getContext();
assertThat( result.get( "Greeting Message" ), is( "Hello John Doe" ) );
dmnResult = dmnClient.evaluateDecisionById( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, "nonExistantId", dmnContext ).getResult();
assertThat( dmnResult.getDecisionResults().size(), is(1) );
assertThat( dmnResult.getDecisionResultByName( "Greeting Message" ).getEvaluationStatus(), is( DMNDecisionResult.DecisionEvaluationStatus.NOT_EVALUATED ) );
dmnResult = dmnClient.evaluateDecisionById( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, "", dmnContext ).getResult();
assertThat( dmnResult.getDecisionResults().size(), is(1) );
assertThat( dmnResult.getDecisionResultByName( "Greeting Message" ).getEvaluationStatus(), is( DMNDecisionResult.DecisionEvaluationStatus.NOT_EVALUATED ) );
// difference with org.kie.dmn.core.DMNInputRuntimeTest:
try {
dmnResult = dmnClient.evaluateDecisionById( CONTAINER_ID, MODEL_NAMESPACE, MODEL_NAME, null, dmnContext ).getResult();
fail("There is no point in calling evaluateDecisionById with null parameter");
} catch ( RuntimeException e ) {
// Ok.
}
}
}