1 package org.openecomp.sdc.be.components.merge.heat;
3 import org.junit.Before;
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;
11 import java.util.Arrays;
12 import java.util.Collections;
13 import java.util.List;
14 import java.util.stream.Stream;
16 import static org.junit.Assert.assertEquals;
18 public class HeatEnvArtifactsMergeBusinessLogicTest {
20 private HeatEnvArtifactsMergeBusinessLogic testInstance;
23 public void setUp() throws Exception {
24 testInstance = new HeatEnvArtifactsMergeBusinessLogic();
28 public void mergeHeatEnvParameter_diffArtifactLabel_noMerging() throws Exception {
29 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
30 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
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());
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());
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());
62 public void mergeHeatEnvParameter__diffOldAndNewValues_overrideNewValueWithOldValue() throws Exception {
63 HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", null);
64 HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2value");
66 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
67 HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
69 ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1, prevHeatParam2);
70 ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1, newHeatParam2);
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());
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");
85 HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
86 HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
87 HeatParameterDefinition prevHeatParam3 = buildHeatParameterDefinition("param3", "type2", "param3PrevValue");
89 ArtifactDefinition oldArtifact1 = buildHeatArtifact("artifact1", prevHeatParam1);
90 ArtifactDefinition oldArtifact2 = buildHeatArtifact("artifact2", prevHeatParam2);
91 ArtifactDefinition oldArtifact3 = buildHeatArtifact("artifact3", prevHeatParam3);
93 ArtifactDefinition newArtifact1 = buildHeatArtifact("artifact1", newHeatParam1);
94 ArtifactDefinition newArtifact2 = buildHeatArtifact("artifact2New", newHeatParam2);
95 ArtifactDefinition newArtifact3 = buildHeatArtifact("artifact3", newHeatParam3);
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());
102 private HeatParameterDefinition buildHeatParameterDefinition(String name, String type, String val) {
103 return new HeatParameterBuilder().setName(name).setType(type).setCurrentValue(val).build();
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();