/*
* 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.Ignore;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.dmn.api.core.DMNContext;
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 org.kie.server.api.model.dmn.DMNModelInfo;
import org.kie.server.api.model.dmn.DMNModelInfoList;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.*;
import org.kie.server.integrationtests.shared.KieServerDeployer;
public class DMNTwoDMNModelsIntegrationTest
extends DMNKieServerBaseIntegrationTest {
private static final ReleaseId kjar1 = new ReleaseId(
"org.kie.server.testing", "two-dmn-models",
"1.0.0.Final" );
private static final String CONTAINER_1_ID = "two-dmn-models";
@BeforeClass
public static void deployArtifacts() {
KieServerDeployer.buildAndDeployCommonMavenParent();
KieServerDeployer.buildAndDeployMavenProject( ClassLoader.class.getResource( "/kjars-sources/two-dmn-models" ).getFile() );
kieContainer = KieServices.Factory.get().newKieContainer(kjar1);
createContainer(CONTAINER_1_ID, kjar1);
}
@Override
protected void addExtraCustomClasses(Map<String, Class<?>> extraClasses)
throws Exception {
// no extra classes.
}
@Test
public void test_getModels() {
ServiceResponse<DMNModelInfoList> getModels = dmnClient.getModels(CONTAINER_1_ID);
assertEquals(ResponseType.SUCCESS, getModels.getType());
List<DMNModelInfo> models = getModels.getResult().getModels();
System.out.println(models);
assertThat( models, hasSize( 2 ) );
DMNModelInfo fdModel = models.stream().filter(mi -> mi.getName().equals("function-definition")).findFirst().orElse(null);
assertThat( fdModel, notNullValue() );
assertThat( fdModel.getNamespace(), is("https://www.drools.org/kie-dmn/function-definition") );
assertThat( fdModel.getDecisions(), hasSize(1) );
assertThat( fdModel.getDecisions().iterator().next().getName(), is("Math") );
DMNModelInfo idsModel = models.stream().filter(mi -> mi.getName().equals("input-data-string")).findFirst().orElse(null);
assertThat( idsModel, notNullValue() );
assertThat( idsModel.getNamespace(), is("https://github.com/kiegroup/kie-dmn/input-data-string") );
assertThat( idsModel.getDecisions(), hasSize(1) );
assertThat( idsModel.getDecisions().iterator().next().getName(), is("Greeting Message") );
}
@Test
public void test_evaluateAllOnInputDataStringModel() {
DMNContext dmnContext = dmnClient.newContext();
dmnContext.set( "Full Name", "John Doe" );
ServiceResponse<DMNResult> evaluateAll = dmnClient.evaluateAll(CONTAINER_1_ID,
"https://github.com/kiegroup/kie-dmn/input-data-string", "input-data-string",
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" ) );
}
@Test
public void test_evaluateAllOnFunctionDefinitionModel() {
DMNContext dmnContext = dmnClient.newContext();
dmnContext.set( "a", 10 );
dmnContext.set( "b", 5 );
ServiceResponse<DMNResult> evaluateAll = dmnClient.evaluateAll(CONTAINER_1_ID,
"https://www.drools.org/kie-dmn/function-definition", "function-definition",
dmnContext);
assertEquals(ResponseType.SUCCESS, evaluateAll.getType());
DMNResult dmnResult = evaluateAll.getResult();
Map<String, Object> mathInCtx = (Map<String, Object>) dmnResult.getContext().get( "Math" );
assertThat( mathInCtx, hasEntry( "Sum", BigDecimal.valueOf( 15 ) ) );
Map<String, Object> dr0 = (Map<String, Object>) dmnResult.getDecisionResultByName("Math").getResult();
assertThat( dr0, hasEntry( "Sum", BigDecimal.valueOf( 15 ) ) );
}
}