2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model.operations.impl;
23 import static org.junit.Assert.*;
25 import java.util.ArrayList;
26 import java.util.List;
27 import org.apache.commons.lang3.tuple.ImmutablePair;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mockito;
32 import org.mockito.MockitoAnnotations;
33 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
34 import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
35 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
36 import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
37 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
38 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
39 import org.openecomp.sdc.be.model.CapabilityDefinition;
40 import org.openecomp.sdc.be.model.ComponentInstance;
41 import org.openecomp.sdc.be.model.operations.impl.ComponentInstanceOperation;
42 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
43 import org.openecomp.sdc.be.resources.data.CapabilityData;
44 import org.openecomp.sdc.be.resources.data.CapabilityInstData;
45 import org.openecomp.sdc.be.resources.data.RequirementData;
46 import org.openecomp.sdc.be.unittests.utils.FactoryUtils;
48 import fj.data.Either;
50 public class ComponentInstanceOperationTest {
53 ComponentInstanceOperation componentInstanceOperation = new ComponentInstanceOperation();
55 private TitanGenericDao titanGenericDao = Mockito.mock(TitanGenericDao.class);
58 public void beforeTest() {
59 Mockito.reset(titanGenericDao);
60 MockitoAnnotations.initMocks(this);
64 public void testGetCapabilities() {
66 ComponentInstance ri = FactoryUtils.createResourceInstance();
67 CapabilityData capData = FactoryUtils.createCapabilityData();
68 Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> childNodesReturned = prepareChildNodeRetValue(
71 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(),
72 Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any()))
73 .thenReturn(childNodesReturned);
75 // ImmutablePair<ComponentInstance, List<ImmutablePair<CapabilityData,
76 // GraphEdge>>> instanceAndCapabilities =
77 // componentInstanceOperation.getCapabilities(ri,
78 // NodeTypeEnum.Resource);
80 Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> instanceAndCapabilities = componentInstanceOperation
81 .getCapabilities(ri, NodeTypeEnum.Resource);
83 // assertTrue(instanceAndCapabilities.left.getUniqueId().equals(ri.getUniqueId()));
84 assertTrue(instanceAndCapabilities.left().value().size() == 1);
85 assertTrue(instanceAndCapabilities.left().value().get(0).left.getUniqueId().equals(capData.getUniqueId()));
90 public void testGetRequirements() {
91 ComponentInstance ri = FactoryUtils.createResourceInstance();
92 RequirementData reqData = FactoryUtils.createRequirementData();
93 Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> childNodesReturned = prepareChildNodeRetValue(
96 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(),
97 Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any()))
98 .thenReturn(childNodesReturned);
100 // ImmutablePair<ComponentInstance, List<ImmutablePair<RequirementData,
101 // GraphEdge>>> instanceAndCapabilities =
102 // componentInstanceOperation.getRequirements(ri,
103 // NodeTypeEnum.Resource);
104 Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> instanceAndCapabilities = componentInstanceOperation
105 .getRequirements(ri, NodeTypeEnum.Resource);
107 // assertTrue(instanceAndCapabilities.left.getUniqueId().equals(ri.getUniqueId()));
108 // assertTrue(instanceAndCapabilities.right.size() == 1);
109 // assertTrue(instanceAndCapabilities.right.get(0).left.getUniqueId().equals(reqData.getUniqueId()));
111 assertTrue(instanceAndCapabilities.left().value().size() == 1);
112 assertTrue(instanceAndCapabilities.left().value().get(0).left.getUniqueId().equals(reqData.getUniqueId()));
116 private CapabilityInstData buildCapabilityInstanceData(String resourceInstanceId, CapabilityDefinition capability) {
117 CapabilityInstData capabilityInstance = new CapabilityInstData();
118 Long creationTime = System.currentTimeMillis();
119 String uniqueId = UniqueIdBuilder.buildCapabilityInstanceUid(resourceInstanceId, capability.getName());
121 capabilityInstance.setCreationTime(creationTime);
122 capabilityInstance.setModificationTime(creationTime);
123 capabilityInstance.setUniqueId(uniqueId);
125 return capabilityInstance;
128 private Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> prepareChildNodeRetValue(
130 ImmutablePair<GraphNode, GraphEdge> pair = new ImmutablePair<>(data, FactoryUtils.createGraphEdge());
131 List<ImmutablePair<GraphNode, GraphEdge>> retList = new ArrayList<>();
133 return Either.left(retList);