/* * 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.assignmentsEditor; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.jboss.errai.marshalling.client.api.MarshallingSession; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.AssignmentData; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.AssignmentDataMarshaller; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.AssignmentRow; import org.kie.workbench.common.stunner.bpmn.client.forms.fields.model.Variable; import org.mockito.ArgumentCaptor; import org.mockito.Captor; 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 ActivityDataIOEditorTest { @Captor private ArgumentCaptor<Set<String>> setCaptor; @Captor private ArgumentCaptor<List<String>> listCaptor; @Captor ArgumentCaptor<List<AssignmentRow>> listAssignmentCaptor; @Mock private ActivityDataIOEditorView ioEditorView; @Spy @InjectMocks private ActivityDataIOEditor ioEditor = new ActivityDataIOEditor() { @Override protected String marshallToJson(AssignmentData data) { return new AssignmentDataMarshaller().doNotNullMarshall(data, mock(MarshallingSession.class)); } }; @Test public void testInitIoEditor() { ioEditor.init(); verify(ioEditorView, times(1)).init(ioEditor); } @Test public void testSaveClickCallback() { AssignmentRow row = new AssignmentRow("name", Variable.VariableType.INPUT, "String", "Object", "var", null); List<AssignmentRow> input = new ArrayList<AssignmentRow>(); input.add(row); List<AssignmentRow> output = new ArrayList<AssignmentRow>(); output.add(row); when(ioEditorView.getInputAssignmentData()).thenReturn(input); when(ioEditorView.getOutputAssignmentData()).thenReturn(output); List<String> dataTypes = new ArrayList<String>(); List<String> dataTypesDisplayNames = new ArrayList<String>(); dataTypes.add("a.b.c.Name"); dataTypesDisplayNames.add("Name"); ActivityDataIOEditor.GetDataCallback mockCallback = mock(ActivityDataIOEditor.GetDataCallback.class); ioEditor.setCallback(mockCallback); ioEditor.handleSaveClick(); verify(ioEditorView).getInputAssignmentData(); verify(ioEditorView).getOutputAssignmentData(); verify(ioEditorView).hideView(); verify((ioEditor.callback)).getData(anyString()); } @Test public void testSaveClickHide() { ioEditor.handleSaveClick(); verify(ioEditorView).hideView(); } @Test public void testCancelClick() { ActivityDataIOEditor.GetDataCallback mockCallback = mock(ActivityDataIOEditor.GetDataCallback.class); ioEditor.setCallback(mockCallback); ioEditor.handleCancelClick(); verify(ioEditorView).hideView(); verify(mockCallback, never()).getData(anyString()); } @Test public void testPossibleDataTypes() { List<String> dataTypes = new ArrayList<String>(); List<String> dataTypesDisplayNames = new ArrayList<String>(); dataTypes.add("a.b.c.Name"); dataTypesDisplayNames.add("Name"); ioEditor.setDataTypes(dataTypes, dataTypesDisplayNames); verify(ioEditorView).setPossibleInputAssignmentsDataTypes(listCaptor.capture()); assertEquals(1, listCaptor.getValue().size()); assertEquals(dataTypesDisplayNames.get(0), listCaptor.getValue().get(0)); verify(ioEditorView).setPossibleOutputAssignmentsDataTypes(listCaptor.capture()); assertEquals(1, listCaptor.getValue().size()); assertEquals(dataTypesDisplayNames.get(0), listCaptor.getValue().get(0)); } @Test public void testConfigureDialogBoolean() { ioEditor.configureDialog("task name", true, false, true, false); verify(ioEditorView).setInputAssignmentsVisibility(true); verify(ioEditorView).setIsInputAssignmentSingleVar(false); verify(ioEditorView).setOutputAssignmentsVisibility(true); verify(ioEditorView).setIsOutputAssignmentSingleVar(false); ioEditor.configureDialog("task name", false, true, false, true); verify(ioEditorView).setInputAssignmentsVisibility(false); verify(ioEditorView).setIsInputAssignmentSingleVar(true); verify(ioEditorView).setOutputAssignmentsVisibility(false); verify(ioEditorView).setIsOutputAssignmentSingleVar(true); } @Test public void testConfigureDialogTaskNameEmpty() { ioEditor.configureDialog("", true, true, true, true); verify(ioEditorView, times(1)).setDefaultViewTitle(); verify(ioEditorView, never()).setCustomViewTitle(anyString()); } @Test public void testConfigureDialogTaskNameNull() { ioEditor.configureDialog(null, true, true, true, true); verify(ioEditorView, times(1)).setDefaultViewTitle(); verify(ioEditorView, never()).setCustomViewTitle(anyString()); } @Test public void testConfigureDialogTaskNameCustom() { ioEditor.configureDialog("abc", true, true, true, true); verify(ioEditorView, times(1)).setCustomViewTitle("abc"); verify(ioEditorView, never()).setDefaultViewTitle(); } @Test public void testDisallowedPropertyNames() { List<String> disallowedNames = new ArrayList<String>(); disallowedNames.add("Abc"); disallowedNames.add("xyZ"); ioEditor.setDisallowedPropertyNames(disallowedNames); verify(ioEditorView).setInputAssignmentsDisallowedNames(setCaptor.capture()); assertEquals("should be 2 disallowed names", 2, setCaptor.getValue().size()); assertTrue("disallowed names should contain: abc", setCaptor.getValue().contains("abc")); assertTrue("disallowed names should contain: xyz", setCaptor.getValue().contains("xyz")); } @Test public void testNullDisallowedPropertyNames() { Set<String> disallowedNames = new HashSet<String>(); ioEditor.setDisallowedPropertyNames(null); verify(ioEditorView).setInputAssignmentsDisallowedNames(disallowedNames); } @Test public void testProcessVariables() { List<String> variables = new ArrayList<String>(); variables.add("variable"); ioEditor.setProcessVariables(variables); verify(ioEditorView).setInputAssignmentsProcessVariables(listCaptor.capture()); assertEquals(1, listCaptor.getValue().size()); assertEquals(variables.get(0), listCaptor.getValue().get(0)); verify(ioEditorView).setOutputAssignmentsProcessVariables(variables); assertEquals(1, listCaptor.getValue().size()); assertEquals(variables.get(0), listCaptor.getValue().get(0)); } @Test public void testInputAssignmentsRows() { List<AssignmentRow> rows = getAssignmentsWithSameNames(); ioEditor.setInputAssignmentRows(rows); verify(ioEditorView).setInputAssignmentRows(listAssignmentCaptor.capture()); checkAssignmentsWithSameNames(rows); } @Test public void testOutputAssignmentsRows() { List<AssignmentRow> rows = getAssignmentsWithSameNames(); ioEditor.setOutputAssignmentRows(rows); verify(ioEditorView).setOutputAssignmentRows(listAssignmentCaptor.capture()); checkAssignmentsWithSameNames(rows); } private List<AssignmentRow> getAssignmentsWithSameNames() { List<AssignmentRow> rows = new ArrayList<AssignmentRow>(); rows.add(new AssignmentRow("varName", null, null, null, "varName", null)); rows.add(new AssignmentRow("varName2", null, null, null, "varName2", null)); return rows; } private void checkAssignmentsWithSameNames(List<AssignmentRow> assignments) { assertEquals(2, listAssignmentCaptor.getValue().size()); assertEquals(assignments.get(0), listAssignmentCaptor.getValue().get(0)); assertEquals("varName", listAssignmentCaptor.getValue().get(0).getName()); assertEquals("varName", listAssignmentCaptor.getValue().get(0).getProcessVar()); assertEquals(assignments.get(1), listAssignmentCaptor.getValue().get(1)); assertEquals("varName2", listAssignmentCaptor.getValue().get(1).getName()); assertEquals("varName2", listAssignmentCaptor.getValue().get(1).getProcessVar()); } @Test public void testShow() { ioEditor.show(); verify(ioEditorView).showView(); verify(ioEditorView, never()).hideView(); } }