/* * 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.bpmn.factory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.stunner.bpmn.definition.BPMNDiagramImpl; import org.kie.workbench.common.stunner.bpmn.definition.StartNoneEvent; 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.command.Command; import org.kie.workbench.common.stunner.core.command.CompositeCommand; import org.kie.workbench.common.stunner.core.graph.Graph; import org.kie.workbench.common.stunner.core.graph.Node; import org.kie.workbench.common.stunner.core.graph.command.GraphCommandExecutionContext; import org.kie.workbench.common.stunner.core.graph.command.GraphCommandManager; import org.kie.workbench.common.stunner.core.graph.command.impl.GraphCommandFactory; import org.kie.workbench.common.stunner.core.graph.content.definition.DefinitionSet; import org.kie.workbench.common.stunner.core.graph.processing.index.GraphIndexBuilder; import org.kie.workbench.common.stunner.core.rule.RuleManager; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.*; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class BPMNGraphFactoryImplTest { @Mock private DefinitionManager definitionManager; @Mock private FactoryManager factoryManager; @Mock private RuleManager ruleManager; @Mock private GraphCommandManager graphCommandManager; @Mock private GraphCommandFactory graphCommandFactory; @Mock private GraphIndexBuilder<?> indexBuilder; private BPMNGraphFactoryImpl tested; @Before public void init() { tested = new BPMNGraphFactoryImpl(definitionManager, factoryManager, ruleManager, graphCommandManager, graphCommandFactory, indexBuilder); } @Test public void testFactoryType() { assertEquals(BPMNGraphFactory.class, tested.getFactoryType()); } @Test @SuppressWarnings("unchecked") public void testBuild() { final Node diagramNode = mock(Node.class); final Node startEventNode = mock(Node.class); when(factoryManager.newElement(anyString(), eq(BPMNDiagramImpl.class))).thenReturn(diagramNode); when(factoryManager.newElement(anyString(), eq(StartNoneEvent.class))).thenReturn(startEventNode); final Graph<DefinitionSet, Node> graph = tested.build("uuid1", "defSetId"); assertNotNull(graph); assertEquals("uuid1", graph.getUUID()); assertEquals(1, graph.getLabels().size()); assertTrue(graph.getLabels().contains("defSetId")); final ArgumentCaptor<Command> commandCaptor = ArgumentCaptor.forClass(Command.class); verify(graphCommandFactory, times(1)).addNode(eq(diagramNode)); verify(graphCommandFactory, times(1)).addChildNode(eq(diagramNode), eq(startEventNode), eq(BPMNGraphFactoryImpl.START_X), eq(BPMNGraphFactoryImpl.START_Y)); verify(graphCommandManager, times(1)).execute(any(GraphCommandExecutionContext.class), commandCaptor.capture()); final Command command = commandCaptor.getValue(); assertTrue(command instanceof CompositeCommand); final CompositeCommand compositeCommand = (CompositeCommand) command; assertEquals(2, compositeCommand.size()); } }