/* * Copyright 2017 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.cm.client.wires; import com.ait.lienzo.client.core.shape.wires.ILayoutHandler; import com.ait.lienzo.test.LienzoMockitoTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(LienzoMockitoTestRunner.class) public class AbstractCaseManagementShapeTest { @Mock private ILayoutHandler layoutHandler; private MockCaseManagementShape shape; @Before public void setup() { this.shape = new MockCaseManagementShape(); this.shape.setLayoutHandler(layoutHandler); } @Test public void checkLogicalReplacementWithOneChild() { final MockCaseManagementShape child = new MockCaseManagementShape(); final MockCaseManagementShape replacement = new MockCaseManagementShape(); shape.add(child); verify(layoutHandler, times(1)).requestLayout(shape); assertEquals(1, shape.getChildShapes().size()); assertEquals(child, shape.getChildShapes().get(0)); assertEquals(shape, child.getParent()); shape.logicallyReplace(child, replacement); assertEquals(1, shape.getChildShapes().size()); assertEquals(replacement, shape.getChildShapes().get(0)); assertEquals(shape, replacement.getParent()); assertNull(child.getParent()); verify(layoutHandler, times(2)).requestLayout(shape); } @Test public void checkLogicalReplacementWithMultipleChildren() { final MockCaseManagementShape child1 = new MockCaseManagementShape(); final MockCaseManagementShape child2 = new MockCaseManagementShape(); final MockCaseManagementShape replacement = new MockCaseManagementShape(); shape.add(child1); shape.add(child2); verify(layoutHandler, times(2)).requestLayout(shape); assertEquals(2, shape.getChildShapes().size()); assertEquals(child1, shape.getChildShapes().get(0)); assertEquals(child2, shape.getChildShapes().get(1)); assertEquals(shape, child1.getParent()); assertEquals(shape, child2.getParent()); shape.logicallyReplace(child1, replacement); assertEquals(2, shape.getChildShapes().size()); assertEquals(replacement, shape.getChildShapes().get(0)); assertEquals(child2, shape.getChildShapes().get(1)); assertEquals(shape, replacement.getParent()); assertNull(child1.getParent()); verify(layoutHandler, times(3)).requestLayout(shape); } @Test public void checkAddShapeAtIndex0WithNoExistingChildren() { final MockCaseManagementShape child = new MockCaseManagementShape(); shape.addShape(child, 0); verify(layoutHandler, times(1)).requestLayout(shape); assertEquals(1, shape.getChildShapes().size()); assertEquals(child, shape.getChildShapes().get(0)); } @Test public void checkAddShapeAtIndex1WithNoExistingChildren() { final MockCaseManagementShape child = new MockCaseManagementShape(); shape.addShape(child, 1); verify(layoutHandler, never()).requestLayout(shape); assertEquals(0, shape.getChildShapes().size()); } @Test public void checkAddShapeAtNegativeIndexWithNoExistingChildren() { final MockCaseManagementShape child = new MockCaseManagementShape(); shape.addShape(child, -1); verify(layoutHandler, never()).requestLayout(shape); assertEquals(0, shape.getChildShapes().size()); } }