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(capData);
70 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(), Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any())).thenReturn(childNodesReturned);
72 // ImmutablePair<ComponentInstance, List<ImmutablePair<CapabilityData,
73 // GraphEdge>>> instanceAndCapabilities =
74 // componentInstanceOperation.getCapabilities(ri,
75 // NodeTypeEnum.Resource);
77 Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> instanceAndCapabilities = componentInstanceOperation.getCapabilities(ri, NodeTypeEnum.Resource);
79 // assertTrue(instanceAndCapabilities.left.getUniqueId().equals(ri.getUniqueId()));
80 assertTrue(instanceAndCapabilities.left().value().size() == 1);
81 assertTrue(instanceAndCapabilities.left().value().get(0).left.getUniqueId().equals(capData.getUniqueId()));
86 public void testGetRequirements() {
87 ComponentInstance ri = FactoryUtils.createResourceInstance();
88 RequirementData reqData = FactoryUtils.createRequirementData();
89 Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> childNodesReturned = prepareChildNodeRetValue(reqData);
91 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(), Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any())).thenReturn(childNodesReturned);
93 // ImmutablePair<ComponentInstance, List<ImmutablePair<RequirementData,
94 // GraphEdge>>> instanceAndCapabilities =
95 // componentInstanceOperation.getRequirements(ri,
96 // NodeTypeEnum.Resource);
97 Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> instanceAndCapabilities = componentInstanceOperation.getRequirements(ri, NodeTypeEnum.Resource);
99 // assertTrue(instanceAndCapabilities.left.getUniqueId().equals(ri.getUniqueId()));
100 // assertTrue(instanceAndCapabilities.right.size() == 1);
101 // assertTrue(instanceAndCapabilities.right.get(0).left.getUniqueId().equals(reqData.getUniqueId()));
103 assertTrue(instanceAndCapabilities.left().value().size() == 1);
104 assertTrue(instanceAndCapabilities.left().value().get(0).left.getUniqueId().equals(reqData.getUniqueId()));
108 private CapabilityInstData buildCapabilityInstanceData(String resourceInstanceId, CapabilityDefinition capability) {
109 CapabilityInstData capabilityInstance = new CapabilityInstData();
110 Long creationTime = System.currentTimeMillis();
111 String uniqueId = UniqueIdBuilder.buildCapabilityInstanceUid(resourceInstanceId, capability.getName());
113 capabilityInstance.setCreationTime(creationTime);
114 capabilityInstance.setModificationTime(creationTime);
115 capabilityInstance.setUniqueId(uniqueId);
117 return capabilityInstance;
120 private Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> prepareChildNodeRetValue(GraphNode data) {
121 ImmutablePair<GraphNode, GraphEdge> pair = new ImmutablePair<>(data, FactoryUtils.createGraphEdge());
122 List<ImmutablePair<GraphNode, GraphEdge>> retList = new ArrayList<>();
124 return Either.left(retList);