/* * 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.kie.workbench.common.stunner.bpmn.client.forms.fields.variablesEditor; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.Variable; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.VariableRow; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class VariablesEditorFieldRendererTest { @Mock private VariablesEditorWidgetView variablesEditorWidgetView; @Mock private VariableListItemWidgetView variableListItemWidgetView; @Spy @InjectMocks private VariablesEditorFieldRenderer variablesEditor = new VariablesEditorFieldRenderer(variablesEditorWidgetView); @Test public void testAddVariable() { when(variablesEditorWidgetView.getVariableWidget(anyInt())).thenReturn(variableListItemWidgetView); when(variablesEditorWidgetView.getVariableRowsCount()).thenReturn(1); variablesEditor.addVariable(); verify(variablesEditorWidgetView, times(1)).setTableDisplayStyle(); verify(variablesEditorWidgetView, times(1)).getVariableRowsCount(); verify(variablesEditorWidgetView, times(1)).getVariableWidget(0); when(variablesEditorWidgetView.getVariableRowsCount()).thenReturn(2); variablesEditor.addVariable(); verify(variablesEditorWidgetView, times(2)).getVariableRowsCount(); verify(variablesEditorWidgetView, times(1)).getVariableWidget(1); } @Test public void testRemoveVariable() { when(variablesEditorWidgetView.getVariableWidget(anyInt())).thenReturn(variableListItemWidgetView); when(variablesEditorWidgetView.getVariableRowsCount()).thenReturn(1); variablesEditor.addVariable(); variablesEditor.addVariable(); variablesEditor.removeVariable(null); verify(variablesEditorWidgetView, times(3)).getVariableRows(); verify(variablesEditorWidgetView, times(1)).doSave(); variablesEditor.removeVariable(null); verify(variablesEditorWidgetView, times(4)).getVariableRows(); verify(variablesEditorWidgetView, times(2)).doSave(); } @Test public void testDeserializeVariables() { List<String> dataTypes = new ArrayList<String>(Arrays.asList("Boolean", "Float", "Integer", "Object", "org.veg.Potato", "String")); List<String> dataTypeDisplayNames = new ArrayList<String>(Arrays.asList("Boolean", "Float", "Integer", "Potato [org.veg]", "Object", "String")); variablesEditor.setDataTypes(dataTypes, dataTypeDisplayNames); List<VariableRow> variableRows = variablesEditor.deserializeVariables("var1:String,var2:Integer,var3:org.stuff.Potato"); assertEquals(3, variableRows.size()); VariableRow var = variableRows.get(0); assertEquals("var1", var.getName()); assertEquals("String", var.getDataTypeDisplayName()); assertEquals(Variable.VariableType.PROCESS, var.getVariableType()); var = variableRows.get(1); assertEquals("var2", var.getName()); assertEquals("Integer", var.getDataTypeDisplayName()); assertEquals(Variable.VariableType.PROCESS, var.getVariableType()); var = variableRows.get(2); assertEquals("var3", var.getName()); assertEquals("org.stuff.Potato", var.getCustomDataType()); assertEquals(Variable.VariableType.PROCESS, var.getVariableType()); } @Test public void testSerializeVariables() { Map<String, String> mapDataTypeDisplayNamesToNames = new HashMap<String, String>(); mapDataTypeDisplayNamesToNames.put("String", "String"); mapDataTypeDisplayNamesToNames.put("Integer", "Integer"); mapDataTypeDisplayNamesToNames.put("Potato [org.veg]", "org.veg.Potato"); variablesEditor.mapDataTypeDisplayNamesToNames = mapDataTypeDisplayNamesToNames; List<VariableRow> variableRows = new ArrayList<VariableRow>(); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var1", "String", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var2", "Integer", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var3", "org.veg.Potato", null)); String s = variablesEditor.serializeVariables(variableRows); assertEquals("var1:String,var2:Integer,var3:org.veg.Potato", s); } @Test public void testIsDuplicateName() { List<VariableRow> variableRows = new ArrayList<VariableRow>(); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var1", "String", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var2", "Integer", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var3", "org.stuff.Potato", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, "var2", "Integer", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, null, "Object", null)); variableRows.add(new VariableRow(Variable.VariableType.PROCESS, null, null, null)); when(variablesEditorWidgetView.getVariableRows()).thenReturn(variableRows); assertTrue(variablesEditor.isDuplicateName("var2")); assertFalse(variablesEditor.isDuplicateName("var1")); } }