1 package org.openecomp.sdc.be.components.merge.input;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNull;
6 import java.util.Arrays;
7 import java.util.Collections;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.openecomp.sdc.be.dao.utils.MapUtil;
14 import org.openecomp.sdc.be.model.InputDefinition;
15 public class InputsValuesMergingBusinessLogicTest {
17 private static final String INPUT_DEFUALT_TYPE = "string";
18 private static final String INPUT1_ID = "input1";
19 private static final String INPUT2_ID = "input2";
20 private static final String INPUT3_ID = "input3";
21 private static final String INPUT4_ID = "input4";
22 private InputsValuesMergingBusinessLogic testInstance;
25 public void setUp() throws Exception {
26 testInstance = new InputsValuesMergingBusinessLogic();
30 public void testMergeInputs_inputsOfDifferentType_dontCopyOldValue() {
31 InputDefinition oldInput = createUserDefinedInputDefinition(INPUT1_ID, "oldVal1");
33 InputDefinition newInput = createInputDefinition(INPUT1_ID, null);
34 newInput.setType("int");
37 Map<String, InputDefinition> updatedInputs = Collections.singletonMap(newInput.getName(), newInput);
38 Map<String, InputDefinition> oldInputs = Collections.singletonMap(oldInput.getName(), oldInput);
39 testInstance.mergeComponentInputs(oldInputs, updatedInputs);
41 assertNull(updatedInputs.get(INPUT1_ID).getDefaultValue());
45 public void testMergeInputs_newInputsHaveNoValue_copyOldValues() {
46 InputDefinition oldInputWithCsarDefaultValue = createInputDefinition(INPUT1_ID, "oldVal1");
47 InputDefinition oldInputWithUserDefinedValue = createUserDefinedInputDefinition(INPUT2_ID, "oldVal2");
48 InputDefinition oldInputNotExistOnNew = createUserDefinedInputDefinition(INPUT3_ID, null);
50 InputDefinition newInput1 = createInputDefinition(INPUT1_ID, "");
51 InputDefinition newInput2 = createUserDefinedInputDefinition(INPUT2_ID, null);
53 Map<String, InputDefinition> updatedInputs = mapInputsByName(Arrays.asList(newInput1, newInput2));
54 Map<String, InputDefinition> oldInputs = mapInputsByName(Arrays.asList(oldInputWithCsarDefaultValue, oldInputWithUserDefinedValue, oldInputNotExistOnNew));
55 testInstance.mergeComponentInputs(oldInputs, updatedInputs);
57 assertEquals(oldInputWithCsarDefaultValue.getDefaultValue(), updatedInputs.get(INPUT1_ID).getDefaultValue());
58 assertEquals(oldInputWithUserDefinedValue.getDefaultValue(), updatedInputs.get(INPUT2_ID).getDefaultValue());
59 assertNull(updatedInputs.get(INPUT3_ID));
63 public void testMergeInputs_newInputsHaveValue_dontOverrideNewValue() {
64 InputDefinition oldInputWithCsarDefaultValue = createInputDefinition(INPUT1_ID, "oldVal1");
65 InputDefinition oldInputWithUserDefinedValue = createUserDefinedInputDefinition(INPUT2_ID, "oldVal2");
66 InputDefinition oldInputWithNoValue = createUserDefinedInputDefinition(INPUT3_ID, null);
68 InputDefinition newInput1 = createInputDefinition(INPUT1_ID, "newVal1");
69 InputDefinition newInput2 = createUserDefinedInputDefinition(INPUT2_ID, "newVal2");
70 InputDefinition newInput3 = createUserDefinedInputDefinition(INPUT3_ID, "newVal3");
71 InputDefinition newInput4 = createUserDefinedInputDefinition(INPUT4_ID, "newVal4");
73 Map<String, InputDefinition> updatedInputs = mapInputsByName(Arrays.asList(newInput1, newInput2, newInput3, newInput4));
74 Map<String, InputDefinition> oldInputs = mapInputsByName(Arrays.asList(oldInputWithCsarDefaultValue, oldInputWithUserDefinedValue, oldInputWithNoValue));
75 testInstance.mergeComponentInputs(oldInputs, updatedInputs);
77 assertEquals(updatedInputs.get(INPUT1_ID).getDefaultValue(), newInput1.getDefaultValue());
78 assertEquals(updatedInputs.get(INPUT2_ID).getDefaultValue(), newInput2.getDefaultValue());
79 assertEquals(updatedInputs.get(INPUT3_ID).getDefaultValue(), newInput3.getDefaultValue());
80 assertEquals(updatedInputs.get(INPUT4_ID).getDefaultValue(), newInput4.getDefaultValue());
84 private Map<String, InputDefinition> mapInputsByName(List<InputDefinition> inputs) {
85 return MapUtil.toMap(inputs, InputDefinition::getName);
88 private InputDefinition createInputDefinition(String name, String value) {
89 InputDefinition inputDef = new InputDefinition();
90 inputDef.setName(name);
91 inputDef.setDefaultValue(value);
92 inputDef.setType(INPUT_DEFUALT_TYPE);
96 private InputDefinition createUserDefinedInputDefinition(String name, String value) {
97 InputDefinition inputDef = createInputDefinition(name, value);
98 inputDef.setOwnerId("owner");