c77769d7d257ae28215f14e31dc2a6fc7f001bab
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.be.model.operations.impl;
22
23 import static org.junit.Assert.*;
24
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;
47
48 import fj.data.Either;
49
50 public class ComponentInstanceOperationTest {
51
52         @InjectMocks
53         ComponentInstanceOperation componentInstanceOperation = new ComponentInstanceOperation();
54         @InjectMocks
55         private TitanGenericDao titanGenericDao = Mockito.mock(TitanGenericDao.class);
56
57         @Before
58         public void beforeTest() {
59                 Mockito.reset(titanGenericDao);
60                 MockitoAnnotations.initMocks(this);
61         }
62
63         @Test
64         public void testGetCapabilities() {
65
66                 ComponentInstance ri = FactoryUtils.createResourceInstance();
67                 CapabilityData capData = FactoryUtils.createCapabilityData();
68                 Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> childNodesReturned = prepareChildNodeRetValue(capData);
69
70                 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(), Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any())).thenReturn(childNodesReturned);
71
72                 // ImmutablePair<ComponentInstance, List<ImmutablePair<CapabilityData,
73                 // GraphEdge>>> instanceAndCapabilities =
74                 // componentInstanceOperation.getCapabilities(ri,
75                 // NodeTypeEnum.Resource);
76
77                 Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> instanceAndCapabilities = componentInstanceOperation.getCapabilities(ri, NodeTypeEnum.Resource);
78
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()));
82
83         }
84
85         @Test
86         public void testGetRequirements() {
87                 ComponentInstance ri = FactoryUtils.createResourceInstance();
88                 RequirementData reqData = FactoryUtils.createRequirementData();
89                 Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> childNodesReturned = prepareChildNodeRetValue(reqData);
90
91                 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(), Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any())).thenReturn(childNodesReturned);
92
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);
98
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()));
102
103                 assertTrue(instanceAndCapabilities.left().value().size() == 1);
104                 assertTrue(instanceAndCapabilities.left().value().get(0).left.getUniqueId().equals(reqData.getUniqueId()));
105
106         }
107
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());
112
113                 capabilityInstance.setCreationTime(creationTime);
114                 capabilityInstance.setModificationTime(creationTime);
115                 capabilityInstance.setUniqueId(uniqueId);
116
117                 return capabilityInstance;
118         }
119
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<>();
123                 retList.add(pair);
124                 return Either.left(retList);
125         }
126
127 }