re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / input / DeclaredInputsResolverTest.java
1 package org.openecomp.sdc.be.components.merge.input;
2
3 import com.google.common.collect.ImmutableMap;
4 import org.junit.Before;
5 import org.junit.Test;
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;
11
12 import java.util.List;
13 import java.util.Map;
14
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;
19
20
21 public class DeclaredInputsResolverTest {
22
23     private DeclaredInputsResolver testInstance;
24     private Resource prevResource, currResource;
25
26     @Before
27     public void setUp() throws Exception {
28         testInstance = new DeclaredInputsResolver();
29         prevResource = new ResourceBuilder()
30                 .addInput("input1")
31                 .addInput("input2")
32                 .addInput("input3")
33                 .addInput("input4")
34                 .build();
35
36         currResource = new ResourceBuilder()
37                 .addInput("input1")
38                 .addInput("input3")
39                 .build();
40     }
41
42     @Test
43     public void whenPropertiesMapIsEmpty_returnEmptyList() {
44         List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(prevResource, currResource, emptyMap());
45         assertThat(previouslyDeclaredInputsToMerge).isEmpty();
46     }
47
48     @Test
49     public void whenPrevResourceHasNoInputs_returnEmptyList() {
50         List<InputDefinition> previouslyDeclaredInputsToMerge = testInstance.getPreviouslyDeclaredInputsToMerge(new Resource(), currResource, emptyMap());
51         assertThat(previouslyDeclaredInputsToMerge).isEmpty();
52     }
53
54     @Test
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();
61     }
62
63     @Test
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();
70     }
71
72     @Test
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)
82                 .extracting("name")
83                 .containsExactlyInAnyOrder("input2", "input4");
84     }
85
86     private PropertyDataDefinition createPropertyReferencingInput(String propName, String referencingInputName) {
87         return new PropertyDataDefinitionBuilder()
88                 .setName(propName)
89                 .addGetInputValue(referencingInputName)
90                 .build();
91     }
92
93     private PropertyDataDefinition createProperty(String propName) {
94         return new PropertyDataDefinitionBuilder()
95                 .setName(propName)
96                 .build();
97     }
98
99
100
101 }