Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / input / InputsValuesMergingBusinessLogicTest.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.input;
22
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.openecomp.sdc.be.dao.utils.MapUtil;
26 import org.openecomp.sdc.be.model.InputDefinition;
27
28 import java.util.Arrays;
29 import java.util.Collections;
30 import java.util.List;
31 import java.util.Map;
32
33 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertNull;
35 public class InputsValuesMergingBusinessLogicTest {
36
37     private static final String INPUT_DEFUALT_TYPE = "string";
38     private static final String INPUT1_ID = "input1";
39     private static final String INPUT2_ID = "input2";
40     private static final String INPUT3_ID = "input3";
41     private static final String INPUT4_ID = "input4";
42     private InputsValuesMergingBusinessLogic testInstance;
43
44     @Before
45     public void setUp() throws Exception {
46         testInstance = new InputsValuesMergingBusinessLogic();
47     }
48
49     @Test
50     public void testMergeInputs_inputsOfDifferentType_dontCopyOldValue() {
51         InputDefinition oldInput = createUserDefinedInputDefinition(INPUT1_ID, "oldVal1");
52
53         InputDefinition newInput = createInputDefinition(INPUT1_ID, null);
54         newInput.setType("int");
55
56
57         Map<String, InputDefinition> updatedInputs = Collections.singletonMap(newInput.getName(), newInput);
58         Map<String, InputDefinition> oldInputs = Collections.singletonMap(oldInput.getName(), oldInput);
59         testInstance.mergeComponentInputs(oldInputs, updatedInputs);
60
61         assertNull(updatedInputs.get(INPUT1_ID).getDefaultValue());
62     }
63
64     @Test
65     public void testMergeInputs_newInputsHaveNoValue_copyOldValues() {
66         InputDefinition oldInputWithCsarDefaultValue = createInputDefinition(INPUT1_ID, "oldVal1");
67         InputDefinition oldInputWithUserDefinedValue = createUserDefinedInputDefinition(INPUT2_ID, "oldVal2");
68         InputDefinition oldInputNotExistOnNew = createUserDefinedInputDefinition(INPUT3_ID, null);
69
70         InputDefinition newInput1 = createInputDefinition(INPUT1_ID, "");
71         InputDefinition newInput2 = createUserDefinedInputDefinition(INPUT2_ID, null);
72
73         Map<String, InputDefinition> updatedInputs = mapInputsByName(Arrays.asList(newInput1, newInput2));
74         Map<String, InputDefinition> oldInputs = mapInputsByName(Arrays.asList(oldInputWithCsarDefaultValue, oldInputWithUserDefinedValue, oldInputNotExistOnNew));
75         testInstance.mergeComponentInputs(oldInputs, updatedInputs);
76
77         assertEquals(oldInputWithCsarDefaultValue.getDefaultValue(), updatedInputs.get(INPUT1_ID).getDefaultValue());
78         assertEquals(oldInputWithUserDefinedValue.getDefaultValue(), updatedInputs.get(INPUT2_ID).getDefaultValue());
79         assertNull(updatedInputs.get(INPUT3_ID));
80     }
81
82     @Test
83     public void testMergeInputs_newInputsHaveValue_dontOverrideNewValue() {
84         InputDefinition oldInputWithCsarDefaultValue = createInputDefinition(INPUT1_ID, "oldVal1");
85         InputDefinition oldInputWithUserDefinedValue = createUserDefinedInputDefinition(INPUT2_ID, "oldVal2");
86         InputDefinition oldInputWithNoValue = createUserDefinedInputDefinition(INPUT3_ID, null);
87
88         InputDefinition newInput1 = createInputDefinition(INPUT1_ID, "newVal1");
89         InputDefinition newInput2 = createUserDefinedInputDefinition(INPUT2_ID, "newVal2");
90         InputDefinition newInput3 = createUserDefinedInputDefinition(INPUT3_ID, "newVal3");
91         InputDefinition newInput4 = createUserDefinedInputDefinition(INPUT4_ID, "newVal4");
92
93         Map<String, InputDefinition> updatedInputs = mapInputsByName(Arrays.asList(newInput1, newInput2, newInput3, newInput4));
94         Map<String, InputDefinition> oldInputs = mapInputsByName(Arrays.asList(oldInputWithCsarDefaultValue, oldInputWithUserDefinedValue, oldInputWithNoValue));
95         testInstance.mergeComponentInputs(oldInputs, updatedInputs);
96
97         assertEquals(updatedInputs.get(INPUT1_ID).getDefaultValue(), newInput1.getDefaultValue());
98         assertEquals(updatedInputs.get(INPUT2_ID).getDefaultValue(), newInput2.getDefaultValue());
99         assertEquals(updatedInputs.get(INPUT3_ID).getDefaultValue(), newInput3.getDefaultValue());
100         assertEquals(updatedInputs.get(INPUT4_ID).getDefaultValue(), newInput4.getDefaultValue());
101     }
102
103
104     private Map<String, InputDefinition> mapInputsByName(List<InputDefinition> inputs) {
105         return MapUtil.toMap(inputs, InputDefinition::getName);
106     }
107
108     private InputDefinition createInputDefinition(String name, String value) {
109         InputDefinition inputDef = new InputDefinition();
110         inputDef.setName(name);
111         inputDef.setDefaultValue(value);
112         inputDef.setType(INPUT_DEFUALT_TYPE);
113         return inputDef;
114     }
115
116     private InputDefinition createUserDefinedInputDefinition(String name, String value) {
117         InputDefinition inputDef = createInputDefinition(name, value);
118         inputDef.setOwnerId("owner");
119         return inputDef;
120     }
121 }