/*
* 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.
* 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.workbench.services.verifier.webworker.client;
import java.util.ArrayList;
import com.google.gwtmockito.GwtMockitoTestRunner;
import org.drools.workbench.models.datamodel.imports.Import;
import org.drools.workbench.models.datamodel.oracle.DataType;
import org.drools.workbench.services.verifier.api.client.reporting.Severity;
import org.drools.workbench.services.verifier.webworker.client.testutil.ExtendedGuidedDecisionTableBuilder;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.drools.workbench.services.verifier.webworker.client.testutil.TestUtil.*;
@RunWith(GwtMockitoTestRunner.class)
public class DecisionTableAnalyzerDeficiencyTest
extends AnalyzerUpdateTestBase {
@Test
public void testRuleIsNotDeficient() throws Exception {
table52 = new ExtendedGuidedDecisionTableBuilder("org.test",
new ArrayList<Import>(),
"mytable")
.withConditionIntegerColumn("a",
"Person",
"age",
"==")
.withStringColumn("a",
"Person",
"name",
"==")
.withStringColumn("a",
"Person",
"lastName",
"==")
.withActionSetField("a",
"salary",
DataType.TYPE_NUMERIC_INTEGER)
.withData(new Object[][]{
{1, "description", null, "Eder", null, 100},
{2, "description", 10, null, null, 100},
{3, "description", null, "Toni", "Rikkola", 100},
{4, "description", null, null, null, null}
})
.buildTable();
fireUpAnalyzer();
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport());
}
@Test
public void testRuleIsDeficient001() throws Exception {
table52 = new ExtendedGuidedDecisionTableBuilder("org.test",
new ArrayList<Import>(),
"mytable")
.withConditionIntegerColumn("a",
"Person",
"age",
"==")
.withStringColumn("a",
"Person",
"name",
"==")
.withStringColumn("a",
"Person",
"lastName",
"==")
.withActionSetField("a",
"salary",
DataType.TYPE_NUMERIC_INTEGER)
.withData(new Object[][]{
{1, "description", null, "Eder", null, 100},
{2, "description", 10, null, null, 200},
{3, "description", null, "Toni", "Rikkola", 300},
{4, "description", null, null, null, null}
})
.buildTable();
fireUpAnalyzer();
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertContains(analyzerProvider.getAnalysisReport(),
DEFICIENT_ROW,
Severity.WARNING,
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
}
@Test
public void testRuleIsDeficient002() throws Exception {
table52 = new ExtendedGuidedDecisionTableBuilder("org.test",
new ArrayList<Import>(),
"mytable")
.withConditionIntegerColumn("a",
"Person",
"age",
"==")
.withStringColumn("a",
"Person",
"name",
"==")
.withStringColumn("a",
"Person",
"lastName",
"==")
.withActionSetField("a",
"salary",
DataType.TYPE_NUMERIC_INTEGER)
.withActionSetField("a",
"description",
DataType.TYPE_STRING)
.withData(new Object[][]{
{1, "description", 10, "", "", 100, "ok"},
{2, "description", null, "", "", 200, "ok"},
{3, "description", 12, "", "Rikkola", 300, "ok"},
{4, "description", null, "", "", null, ""}
})
.buildTable();
fireUpAnalyzer();
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
setValue(1,
3,
"Toni");
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertContains(analyzerProvider.getAnalysisReport(),
DEFICIENT_ROW,
Severity.WARNING,
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
}
@Test
public void testRuleIsDeficient003() throws Exception {
table52 = new ExtendedGuidedDecisionTableBuilder("org.test",
new ArrayList<Import>(),
"mytable")
.withConditionIntegerColumn("a",
"Person",
"age",
"==")
.withStringColumn("a",
"Person",
"name",
"==")
.withStringColumn("a",
"Person",
"lastName",
"==")
.withActionSetField("a",
"salary",
DataType.TYPE_NUMERIC_INTEGER)
.withActionSetField("a",
"description",
DataType.TYPE_STRING)
.withData(new Object[][]{
{1, "description", 10, "", "", 100, "ok"},
{2, "description", null, "Eder", "", 200, "ok"},
{3, "description", 12, "", "Rikkola", 300, "ok"},
{4, "description", null, "", "", null, ""}
})
.buildTable();
fireUpAnalyzer();
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertContains(analyzerProvider.getAnalysisReport(),
DEFICIENT_ROW,
Severity.WARNING,
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
setValue(2,
3,
"Toni");
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
}
@Test
public void testRuleIsDeficient004() throws Exception {
table52 = new ExtendedGuidedDecisionTableBuilder("org.test",
new ArrayList<Import>(),
"mytable")
.withConditionIntegerColumn("a",
"Person",
"age",
"==")
.withStringColumn("a",
"Person",
"name",
"==")
.withStringColumn("a",
"Person",
"lastName",
"==")
.withActionSetField("a",
"salary",
DataType.TYPE_NUMERIC_INTEGER)
.withActionSetField("a",
"description",
DataType.TYPE_STRING)
.withData(new Object[][]{
{1, "description", 10, "", "", 100, "ok"},
{2, "description", null, "Eder", "", 200, "ok"},
{3, "description", 12, "Toni", "Rikkola", 300, "ok"},
{4, "description", null, "", "", null, ""}
})
.buildTable();
fireUpAnalyzer();
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
setValue(2,
3,
"");
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
1);
assertContains(analyzerProvider.getAnalysisReport(),
DEFICIENT_ROW,
Severity.WARNING,
2);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
3);
assertDoesNotContain(DEFICIENT_ROW,
analyzerProvider.getAnalysisReport(),
4);
}
}