/* * Copyright 2016 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.models.guided.dtable.shared.model; import static org.drools.workbench.models.guided.dtable.shared.model.ActionWorkItemCol52.FIELD_WORKITEM_DEFINITION_NAME; import static org.drools.workbench.models.guided.dtable.shared.model.ActionWorkItemCol52.FIELD_WORKITEM_DEFINITION_PARAMETER_NAME; import static org.drools.workbench.models.guided.dtable.shared.model.ActionWorkItemCol52.FIELD_WORKITEM_DEFINITION_PARAMETER_VALUE; import static org.drools.workbench.models.guided.dtable.shared.model.DTColumnConfig52.FIELD_DEFAULT_VALUE; import static org.drools.workbench.models.guided.dtable.shared.model.DTColumnConfig52.FIELD_HEADER; import static org.drools.workbench.models.guided.dtable.shared.model.DTColumnConfig52.FIELD_HIDE_COLUMN; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import org.drools.workbench.models.datamodel.workitems.PortableStringParameterDefinition; import org.drools.workbench.models.datamodel.workitems.PortableWorkDefinition; import org.junit.Before; import org.junit.Test; public class ActionWorkItemCol52Test extends ColumnTestBase { private ActionWorkItemCol52 column1; private ActionWorkItemCol52 column2; @Before public void setup() { column1 = new ActionWorkItemCol52(); column1.setWorkItemDefinition(null); column1.setHeader("header"); column1.setHideColumn(false); column1.setDefaultValue(new DTCellValue52("default")); column2 = new ActionWorkItemCol52(); column2.setWorkItemDefinition(null); column2.setHeader("header"); column2.setHideColumn(false); column2.setDefaultValue(new DTCellValue52("default")); } @Test public void testDiffEmpty() { checkDiffEmpty(column1, column2); } @Test public void testWorkItemDefinition_SimpleAndNull() { PortableWorkDefinition def1 = new PortableWorkDefinition(); def1.setName("def1name"); column1.setWorkItemDefinition(def1); column2.setWorkItemDefinition(null); checkSingleDiff(FIELD_WORKITEM_DEFINITION_NAME, "def1name", null, column1, column2); } @Test public void testWorkItemDefinition_ParamAndNull() { PortableWorkDefinition def1 = new PortableWorkDefinition(); def1.setName("def1name"); PortableStringParameterDefinition param1 = new PortableStringParameterDefinition(); param1.setName("param1"); param1.setValue("value1"); def1.addParameter(param1); column1.setWorkItemDefinition(null); column2.setWorkItemDefinition(def1); List<BaseColumnFieldDiff> diff = column1.diff(column2); assertNotNull(diff); assertEquals(3, diff.size()); assertEquals(FIELD_WORKITEM_DEFINITION_NAME, diff.get(0).getFieldName()); assertEquals(null, diff.get(0).getOldValue()); assertEquals("def1name", diff.get(0).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_NAME, diff.get(1).getFieldName()); assertEquals(null, diff.get(1).getOldValue()); assertEquals("param1", diff.get(1).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_VALUE, diff.get(2).getFieldName()); assertEquals(null, diff.get(2).getOldValue()); assertEquals("\"value1\"", diff.get(2).getValue()); } @Test public void testWorkItemDefinition_TwoComplexDefs() { PortableStringParameterDefinition param1 = new PortableStringParameterDefinition(); param1.setName("param1"); param1.setValue("value1"); PortableStringParameterDefinition param2 = new PortableStringParameterDefinition(); param2.setName("param2"); param2.setValue("value2"); PortableWorkDefinition def1 = new PortableWorkDefinition(); def1.setName("def1name"); def1.addParameter(param1); def1.addParameter(param2); PortableStringParameterDefinition param3 = new PortableStringParameterDefinition(); // different param -> diff + 2 param3.setName("param3"); param3.setValue("value3"); PortableStringParameterDefinition param4 = new PortableStringParameterDefinition(); // same as param1 param4.setName("param1"); param4.setValue("value1"); PortableStringParameterDefinition param5 = new PortableStringParameterDefinition(); // different param -> diff + 2 param5.setName("param5"); param5.setBinding("binding5"); PortableStringParameterDefinition param6 = new PortableStringParameterDefinition(); // as param2, different value -> diff + 1 param6.setName("param2"); param6.setValue("value6"); PortableWorkDefinition def2 = new PortableWorkDefinition(); def2.setName("def2name"); def2.addParameter(param3); def2.addParameter(param4); def2.addParameter(param5); def2.addParameter(param6); column1.setWorkItemDefinition(def1); column2.setWorkItemDefinition(def2); // different definition -> diff + 1 List<BaseColumnFieldDiff> diff = column1.diff(column2); assertNotNull(diff); for (BaseColumnFieldDiff item : diff) { System.out.println(item.getFieldName()); System.out.println(item.getOldValue()); System.out.println(item.getValue()); } assertEquals(6, diff.size()); assertEquals(FIELD_WORKITEM_DEFINITION_NAME, diff.get(0).getFieldName()); assertEquals("def1name", diff.get(0).getOldValue()); assertEquals("def2name", diff.get(0).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_NAME, diff.get(1).getFieldName()); assertEquals(null, diff.get(1).getOldValue()); assertEquals("param3", diff.get(1).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_VALUE, diff.get(2).getFieldName()); assertEquals(null, diff.get(2).getOldValue()); assertEquals("\"value3\"", diff.get(2).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_NAME, diff.get(3).getFieldName()); assertEquals(null, diff.get(3).getOldValue()); assertEquals("param5", diff.get(3).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_VALUE, diff.get(4).getFieldName()); assertEquals(null, diff.get(4).getOldValue()); assertEquals("binding5", diff.get(4).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_PARAMETER_VALUE, diff.get(5).getFieldName()); assertEquals("\"value2\"", diff.get(5).getOldValue()); assertEquals("\"value6\"", diff.get(5).getValue()); } @Test public void testDiffAll() { PortableWorkDefinition def1 = new PortableWorkDefinition(); def1.setName("def1name"); column1.setWorkItemDefinition(def1); column1.setHeader("header1"); column1.setHideColumn(false); column1.setDefaultValue(new DTCellValue52("default1")); PortableWorkDefinition def2 = new PortableWorkDefinition(); def2.setName("def2name"); column2.setWorkItemDefinition(def2); column2.setHeader("header2"); column2.setHideColumn(true); column2.setDefaultValue(new DTCellValue52("default2")); List<BaseColumnFieldDiff> diff = column1.diff(column2); assertNotNull(diff); assertEquals(4, diff.size()); assertEquals(FIELD_HIDE_COLUMN, diff.get(0).getFieldName()); assertEquals(false, diff.get(0).getOldValue()); assertEquals(true, diff.get(0).getValue()); assertEquals(FIELD_DEFAULT_VALUE, diff.get(1).getFieldName()); assertEquals("default1", diff.get(1).getOldValue()); assertEquals("default2", diff.get(1).getValue()); assertEquals(FIELD_HEADER, diff.get(2).getFieldName()); assertEquals("header1", diff.get(2).getOldValue()); assertEquals("header2", diff.get(2).getValue()); assertEquals(FIELD_WORKITEM_DEFINITION_NAME, diff.get(3).getFieldName()); assertEquals("def1name", diff.get(3).getOldValue()); assertEquals("def2name", diff.get(3).getValue()); } }