Added oparent to sdc main
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / heat / HeatEnvArtifactsMergeBusinessLogicTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 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.components.merge.heat;
22
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
26 import org.openecomp.sdc.be.components.utils.HeatParameterBuilder;
27 import org.openecomp.sdc.be.datatypes.elements.HeatParameterDataDefinition;
28 import org.openecomp.sdc.be.model.ArtifactDefinition;
29 import org.openecomp.sdc.be.model.HeatParameterDefinition;
30
31 import java.util.Arrays;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.stream.Stream;
35
36 import static org.junit.Assert.assertEquals;
37
38 public class HeatEnvArtifactsMergeBusinessLogicTest {
39
40     private HeatEnvArtifactsMergeBusinessLogic testInstance;
41
42     @Before
43     public void setUp() throws Exception {
44         testInstance = new HeatEnvArtifactsMergeBusinessLogic();
45     }
46
47     @Test
48     public void mergeHeatEnvParameter_diffArtifactLabel_noMerging() throws Exception {
49         HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
50         HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
51
52         ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
53         ArtifactDefinition newArtifact = buildHeatArtifact("artifact2", newHeatParam1);
54         List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
55         assertEquals(0, mergedArtifacts.size());
56         assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
57     }
58
59     @Test
60     public void mergeHeatEnvParameter_diffHeatParamName_noMerge() throws Exception {
61         HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
62         HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param2", "type1", "param1PrevValue");
63         ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
64         ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1);
65         List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
66         assertEquals(0, mergedArtifacts.size());
67         assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
68     }
69
70     @Test
71     public void mergeHeatEnvParameter_diffHeatParamType_noMerge() throws Exception {
72         HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
73         HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type2", "param1PrevValue");
74         ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
75         ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1);
76         List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
77         assertEquals(0, mergedArtifacts.size());
78         assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
79     }
80
81     @Test
82     public void mergeHeatEnvParameter__diffOldAndNewValues_overrideNewValueWithOldValue() throws Exception {
83         HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", null);
84         HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2value");
85
86         HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
87         HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
88
89         ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1, prevHeatParam2);
90         ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1, newHeatParam2);
91
92         List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
93         assertEquals(1, mergedArtifacts.size());
94         List<HeatParameterDataDefinition> heatParameters = mergedArtifacts.get(0).getHeatParameters();
95         assertEquals("param1PrevValue", heatParameters.get(0).getCurrentValue());
96         assertEquals("param2PrevValue", heatParameters.get(1).getCurrentValue());
97     }
98
99     @Test
100     public void mergeHeatEnvParameter_multipleArtifacts() throws Exception {
101         HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1Newvalue");
102         HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2Newvalue");
103         HeatParameterDefinition newHeatParam3 = buildHeatParameterDefinition("param2", "type1", "param3Newvalue");
104
105         HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
106         HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
107         HeatParameterDefinition prevHeatParam3 = buildHeatParameterDefinition("param3", "type2", "param3PrevValue");
108
109         ArtifactDefinition oldArtifact1 = buildHeatArtifact("artifact1", prevHeatParam1);
110         ArtifactDefinition oldArtifact2 = buildHeatArtifact("artifact2", prevHeatParam2);
111         ArtifactDefinition oldArtifact3 = buildHeatArtifact("artifact3", prevHeatParam3);
112
113         ArtifactDefinition newArtifact1 = buildHeatArtifact("artifact1", newHeatParam1);
114         ArtifactDefinition newArtifact2 = buildHeatArtifact("artifact2New", newHeatParam2);
115         ArtifactDefinition newArtifact3 = buildHeatArtifact("artifact3", newHeatParam3);
116
117         List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Arrays.asList(oldArtifact1, oldArtifact2, oldArtifact3), Arrays.asList(newArtifact1, newArtifact2, newArtifact3));
118         assertEquals(1, mergedArtifacts.size());//artifact 2 not merged as it has different label, artifact 3 not merged as the heat parameter has diff types
119         assertEquals("artifact1", mergedArtifacts.get(0).getArtifactLabel());
120     }
121
122     private HeatParameterDefinition buildHeatParameterDefinition(String name, String type, String val) {
123         return new HeatParameterBuilder().setName(name).setType(type).setCurrentValue(val).build();
124     }
125
126     private ArtifactDefinition buildHeatArtifact(String label, HeatParameterDefinition ... heatParameterDefinitions) {
127         ArtifactBuilder artifactBuilder = new ArtifactBuilder().setLabel(label);
128         Stream.of(heatParameterDefinitions).forEach(artifactBuilder::addHeatParam);
129         return artifactBuilder.build();
130     }
131
132 }