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