/*
* 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.client.widgets.tooltip;
import com.ait.lienzo.client.core.shape.Group;
import com.ait.lienzo.client.core.shape.Node;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.workbench.common.stunner.core.api.DefinitionManager;
import org.kie.workbench.common.stunner.core.api.FactoryManager;
import org.kie.workbench.common.stunner.core.client.ShapeSet;
import org.kie.workbench.common.stunner.core.client.api.ShapeManager;
import org.kie.workbench.common.stunner.core.client.components.glyph.GlyphTooltip;
import org.kie.workbench.common.stunner.core.client.shape.factory.ShapeFactory;
import org.kie.workbench.common.stunner.core.client.shape.view.glyph.Glyph;
import org.kie.workbench.common.stunner.core.definition.adapter.AdapterManager;
import org.kie.workbench.common.stunner.core.definition.adapter.DefinitionAdapter;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class DefinitionGlyphTooltipImplTest {
private static final String DEFINITION_SET_ID = "defSetId";
@Mock
private DefinitionManager definitionManager;
@Mock
private ShapeManager shapeManager;
@Mock
private FactoryManager factoryManager;
@Mock
private GlyphTooltipImpl.View view;
@Mock
private AdapterManager adapterManager;
@Mock
private DefinitionAdapter definitionAdapter;
@Mock
private ShapeSet shapeSet;
@Mock
private ShapeFactory shapeFactory;
private DefinitionGlyphTooltipImpl tooltip;
@Before
public void setup() {
tooltip = new DefinitionGlyphTooltipImpl(definitionManager,
shapeManager,
factoryManager,
view);
}
@Test
public void checkTooltipGlyphsAreDestroyed() {
final Glyph glyph = makeGlyph("id1");
tooltip.destroy();
verify(glyph).destroy();
}
@SuppressWarnings("unchecked")
private Glyph makeGlyph(final String id) {
final Glyph glyph = mock(Glyph.class);
final Group group = mock(Group.class);
final Object definition = mock(Object.class);
when(glyph.getGroup()).thenReturn(group);
when(group.asNode()).thenReturn(mock(Node.class));
when(factoryManager.newDefinition(eq(id))).thenReturn(definition);
when(definitionManager.adapters()).thenReturn(adapterManager);
when(adapterManager.forDefinition()).thenReturn(definitionAdapter);
when(definitionAdapter.getTitle(eq(definition))).thenReturn(id);
when(shapeManager.getDefaultShapeSet(eq(DEFINITION_SET_ID))).thenReturn(shapeSet);
when(shapeSet.getShapeFactory()).thenReturn(shapeFactory);
when(shapeFactory.glyph(eq(id),
anyDouble(),
anyDouble())).thenReturn(glyph);
tooltip.showGlyph(DEFINITION_SET_ID,
id,
0,
0,
0,
0,
GlyphTooltip.Direction.NORTH);
return glyph;
}
}