aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/test/java/org/openecomp/sdc/be/components/merge/heat/HeatEnvArtifactsMergeBusinessLogicTest.java
blob: c75a6ccd5d774c7f4a76d679ac668d192e4b1688 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package org.openecomp.sdc.be.components.merge.heat;

import org.junit.Before;
import org.junit.Test;
import org.openecomp.sdc.be.components.utils.ArtifactBuilder;
import org.openecomp.sdc.be.components.utils.HeatParameterBuilder;
import org.openecomp.sdc.be.datatypes.elements.HeatParameterDataDefinition;
import org.openecomp.sdc.be.model.ArtifactDefinition;
import org.openecomp.sdc.be.model.HeatParameterDefinition;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;

import static org.junit.Assert.assertEquals;

public class HeatEnvArtifactsMergeBusinessLogicTest {

    private HeatEnvArtifactsMergeBusinessLogic testInstance;

    @Before
    public void setUp() throws Exception {
        testInstance = new HeatEnvArtifactsMergeBusinessLogic();
    }

    @Test
    public void mergeHeatEnvParameter_diffArtifactLabel_noMerging() throws Exception {
        HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
        HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");

        ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
        ArtifactDefinition newArtifact = buildHeatArtifact("artifact2", newHeatParam1);
        List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
        assertEquals(0, mergedArtifacts.size());
        assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
    }

    @Test
    public void mergeHeatEnvParameter_diffHeatParamName_noMerge() throws Exception {
        HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
        HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param2", "type1", "param1PrevValue");
        ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
        ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1);
        List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
        assertEquals(0, mergedArtifacts.size());
        assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
    }

    @Test
    public void mergeHeatEnvParameter_diffHeatParamType_noMerge() throws Exception {
        HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1NewValue");
        HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type2", "param1PrevValue");
        ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1);
        ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1);
        List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
        assertEquals(0, mergedArtifacts.size());
        assertEquals("param1NewValue", newArtifact.getHeatParameters().get(0).getCurrentValue());
    }

    @Test
    public void mergeHeatEnvParameter__diffOldAndNewValues_overrideNewValueWithOldValue() throws Exception {
        HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", null);
        HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2value");

        HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
        HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");

        ArtifactDefinition oldArtifact = buildHeatArtifact("artifact1", prevHeatParam1, prevHeatParam2);
        ArtifactDefinition newArtifact = buildHeatArtifact("artifact1", newHeatParam1, newHeatParam2);

        List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Collections.singletonList(oldArtifact), Collections.singletonList(newArtifact));
        assertEquals(1, mergedArtifacts.size());
        List<HeatParameterDataDefinition> heatParameters = mergedArtifacts.get(0).getHeatParameters();
        assertEquals("param1PrevValue", heatParameters.get(0).getCurrentValue());
        assertEquals("param2PrevValue", heatParameters.get(1).getCurrentValue());
    }

    @Test
    public void mergeHeatEnvParameter_multipleArtifacts() throws Exception {
        HeatParameterDefinition newHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1Newvalue");
        HeatParameterDefinition newHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2Newvalue");
        HeatParameterDefinition newHeatParam3 = buildHeatParameterDefinition("param2", "type1", "param3Newvalue");

        HeatParameterDefinition prevHeatParam1 = buildHeatParameterDefinition("param1", "type1", "param1PrevValue");
        HeatParameterDefinition prevHeatParam2 = buildHeatParameterDefinition("param2", "type1", "param2PrevValue");
        HeatParameterDefinition prevHeatParam3 = buildHeatParameterDefinition("param3", "type2", "param3PrevValue");

        ArtifactDefinition oldArtifact1 = buildHeatArtifact("artifact1", prevHeatParam1);
        ArtifactDefinition oldArtifact2 = buildHeatArtifact("artifact2", prevHeatParam2);
        ArtifactDefinition oldArtifact3 = buildHeatArtifact("artifact3", prevHeatParam3);

        ArtifactDefinition newArtifact1 = buildHeatArtifact("artifact1", newHeatParam1);
        ArtifactDefinition newArtifact2 = buildHeatArtifact("artifact2New", newHeatParam2);
        ArtifactDefinition newArtifact3 = buildHeatArtifact("artifact3", newHeatParam3);

        List<ArtifactDefinition> mergedArtifacts = testInstance.mergeInstanceHeatEnvArtifacts(Arrays.asList(oldArtifact1, oldArtifact2, oldArtifact3), Arrays.asList(newArtifact1, newArtifact2, newArtifact3));
        assertEquals(1, mergedArtifacts.size());//artifact 2 not merged as it has different label, artifact 3 not merged as the heat parameter has diff types
        assertEquals("artifact1", mergedArtifacts.get(0).getArtifactLabel());
    }

    private HeatParameterDefinition buildHeatParameterDefinition(String name, String type, String val) {
        return new HeatParameterBuilder().setName(name).setType(type).setCurrentValue(val).build();
    }

    private ArtifactDefinition buildHeatArtifact(String label, HeatParameterDefinition ... heatParameterDefinitions) {
        ArtifactBuilder artifactBuilder = new ArtifactBuilder().setLabel(label);
        Stream.of(heatParameterDefinitions).forEach(artifactBuilder::addHeatParam);
        return artifactBuilder.build();
    }

}