2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.components.merge.input;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
26 import java.util.Arrays;
27 import java.util.Collections;
28 import java.util.List;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.openecomp.sdc.be.dao.utils.MapUtil;
34 import org.openecomp.sdc.be.model.InputDefinition;
35 public class InputsValuesMergingBusinessLogicTest {
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;
45 public void setUp() throws Exception {
46 testInstance = new InputsValuesMergingBusinessLogic();
50 public void testMergeInputs_inputsOfDifferentType_dontCopyOldValue() {
51 InputDefinition oldInput = createUserDefinedInputDefinition(INPUT1_ID, "oldVal1");
53 InputDefinition newInput = createInputDefinition(INPUT1_ID, null);
54 newInput.setType("int");
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);
61 assertNull(updatedInputs.get(INPUT1_ID).getDefaultValue());
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);
70 InputDefinition newInput1 = createInputDefinition(INPUT1_ID, "");
71 InputDefinition newInput2 = createUserDefinedInputDefinition(INPUT2_ID, null);
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);
77 assertEquals(oldInputWithCsarDefaultValue.getDefaultValue(), updatedInputs.get(INPUT1_ID).getDefaultValue());
78 assertEquals(oldInputWithUserDefinedValue.getDefaultValue(), updatedInputs.get(INPUT2_ID).getDefaultValue());
79 assertNull(updatedInputs.get(INPUT3_ID));
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);
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");
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);
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());
104 private Map<String, InputDefinition> mapInputsByName(List<InputDefinition> inputs) {
105 return MapUtil.toMap(inputs, InputDefinition::getName);
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);
116 private InputDefinition createUserDefinedInputDefinition(String name, String value) {
117 InputDefinition inputDef = createInputDefinition(name, value);
118 inputDef.setOwnerId("owner");