e77c9f0291ca6d4696d373dde8e962d2e51f59c9
[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(
69                                 capData);
70
71                 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(),
72                                 Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any()))
73                                 .thenReturn(childNodesReturned);
74
75                 // ImmutablePair<ComponentInstance, List<ImmutablePair<CapabilityData,
76                 // GraphEdge>>> instanceAndCapabilities =
77                 // componentInstanceOperation.getCapabilities(ri,
78                 // NodeTypeEnum.Resource);
79
80                 Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> instanceAndCapabilities = componentInstanceOperation
81                                 .getCapabilities(ri, NodeTypeEnum.Resource);
82
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()));
86
87         }
88
89         @Test
90         public void testGetRequirements() {
91                 ComponentInstance ri = FactoryUtils.createResourceInstance();
92                 RequirementData reqData = FactoryUtils.createRequirementData();
93                 Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> childNodesReturned = prepareChildNodeRetValue(
94                                 reqData);
95
96                 Mockito.when(titanGenericDao.getChildrenNodes(Mockito.anyString(), Mockito.anyString(),
97                                 Mockito.any(GraphEdgeLabels.class), Mockito.any(NodeTypeEnum.class), Mockito.any()))
98                                 .thenReturn(childNodesReturned);
99
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);
106
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()));
110
111                 assertTrue(instanceAndCapabilities.left().value().size() == 1);
112                 assertTrue(instanceAndCapabilities.left().value().get(0).left.getUniqueId().equals(reqData.getUniqueId()));
113
114         }
115
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());
120
121                 capabilityInstance.setCreationTime(creationTime);
122                 capabilityInstance.setModificationTime(creationTime);
123                 capabilityInstance.setUniqueId(uniqueId);
124
125                 return capabilityInstance;
126         }
127
128         private Either<List<ImmutablePair<GraphNode, GraphEdge>>, TitanOperationStatus> prepareChildNodeRetValue(
129                         GraphNode data) {
130                 ImmutablePair<GraphNode, GraphEdge> pair = new ImmutablePair<>(data, FactoryUtils.createGraphEdge());
131                 List<ImmutablePair<GraphNode, GraphEdge>> retList = new ArrayList<>();
132                 retList.add(pair);
133                 return Either.left(retList);
134         }
135
136 }