1 package org.openecomp.sdc.be.components.merge.input;
3 import com.google.common.collect.ImmutableMap;
4 import org.junit.Before;
6 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
7 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
8 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
9 import org.openecomp.sdc.be.model.InputDefinition;
10 import org.openecomp.sdc.be.model.Resource;
12 import java.util.List;
15 import static java.util.Arrays.asList;
16 import static java.util.Collections.emptyMap;
17 import static java.util.Collections.singletonList;
18 import static org.assertj.core.api.Assertions.assertThat;
21 public class DeclaredInputsResolverTest {
23 private DeclaredInputsResolver testInstance;
24 private Resource prevResource, currResource;
27 public void setUp() throws Exception {
28 testInstance = new DeclaredInputsResolver();
29 prevResource = new ResourceBuilder()
36 currResource = new ResourceBuilder()
43 public void whenPropertiesMapIsEmpty_returnEmptyList() {
44 List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(prevResource, currResource, emptyMap());
45 assertThat(previouslyDeclaredInputsToMerge).isEmpty();
49 public void whenPrevResourceHasNoInputs_returnEmptyList() {
50 List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(new Resource(), currResource, emptyMap());
51 assertThat(previouslyDeclaredInputsToMerge).isEmpty();
55 public void whenAllPropertiesNotReferencingInput_returnEmptyList() {
56 PropertyDataDefinition prop1 = createProperty("prop1");
57 PropertyDataDefinition prop2 = createProperty("prop2");
58 Map<String, List<PropertyDataDefinition>> props = ImmutableMap.of("inst1", singletonList(prop1), "inst2", singletonList(prop2));
59 List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(prevResource, currResource, props);
60 assertThat(previouslyDeclaredInputsToMerge).isEmpty();
64 public void doNotReturnReferencedInputIfAlreadyExistInNewResource() {
65 PropertyDataDefinition prop1 = createPropertyReferencingInput("prop1", "input1");
66 PropertyDataDefinition prop2 = createPropertyReferencingInput("prop2", "input3");
67 Map<String, List<PropertyDataDefinition>> props = ImmutableMap.of("inst1", singletonList(prop1), "inst2", singletonList(prop2));
68 List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(prevResource, currResource, props);
69 assertThat(previouslyDeclaredInputsToMerge).isEmpty();
73 public void returnAllInputsReferencedByPropertyAndNotExistInNewResource() {
74 PropertyDataDefinition prop1 = createPropertyReferencingInput("prop1", "input1");
75 PropertyDataDefinition prop2 = createPropertyReferencingInput("prop2", "input2");
76 PropertyDataDefinition prop3 = createPropertyReferencingInput("prop3", "input3");
77 PropertyDataDefinition prop4 = createPropertyReferencingInput("prop4", "input4");
78 PropertyDataDefinition prop5 = createProperty("prop5");
79 Map<String, List<PropertyDataDefinition>> props = ImmutableMap.of("inst1", asList(prop1, prop3), "inst2", singletonList(prop2), "group1", asList(prop4, prop5));
80 List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(prevResource, currResource, props);
81 assertThat(previouslyDeclaredInputsToMerge)
83 .containsExactlyInAnyOrder("input2", "input4");
86 private PropertyDataDefinition createPropertyReferencingInput(String propName, String referencingInputName) {
87 return new PropertyDataDefinitionBuilder()
89 .addGetInputValue(referencingInputName)
93 private PropertyDataDefinition createProperty(String propName) {
94 return new PropertyDataDefinitionBuilder()