26b6782918612e1292eae40bd0120d10417e7944
[sdc.git] /
1 package org.openecomp.sdc.be.components.merge.input;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.verify;
5 import static org.mockito.Mockito.when;
6
7 import java.util.List;
8 import java.util.Map;
9 import java.util.function.Function;
10 import java.util.stream.Collectors;
11
12 import org.apache.commons.collections.ListUtils;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.mockito.InjectMocks;
16 import org.mockito.Mock;
17 import org.mockito.MockitoAnnotations;
18 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
19 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
20 import org.openecomp.sdc.be.dao.api.ActionStatus;
21 import org.openecomp.sdc.be.model.InputDefinition;
22 import org.openecomp.sdc.be.model.Resource;
23 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
24
25 import fj.data.Either;
26
27 public class ComponentInputsMergeBLTest {
28
29     @InjectMocks
30     private ComponentInputsMergeBL testInstance;
31
32     @Mock
33     private InputsValuesMergingBusinessLogic inputsValuesMergingBusinessLogicMock;
34
35     @Mock
36     private ToscaOperationFacade toscaOperationFacade;
37
38     @Before
39     public void setUp() throws Exception {
40         MockitoAnnotations.initMocks(this);
41     }
42
43     @Test
44     public void mergeComponentInputs() {
45         Resource oldResource = new ResourceBuilder()
46                 .addInput("input1")
47                 .addInput("input2")
48                 .build();
49
50         Resource newResource = new Resource();
51
52         List<InputDefinition> inputsToMerge = ObjectGenerator.buildInputs("input1", "input2", "input3");
53
54         when(toscaOperationFacade.updateInputsToComponent(inputsToMerge, newResource.getUniqueId())).thenReturn(Either.left(inputsToMerge));
55         ActionStatus actionStatus = testInstance.mergeComponentInputs(oldResource, newResource, inputsToMerge);
56         assertEquals(ActionStatus.OK, actionStatus);
57         verifyCallToMergeComponentInputs(oldResource, inputsToMerge);
58     }
59
60     @SuppressWarnings("unchecked")
61     @Test
62     public void mergeAndRedeclareComponentInputs() throws Exception {
63         Resource oldResource = new ResourceBuilder()
64                 .addInput("input1")
65                 .addInput("input2")
66                 .build();
67
68         Resource newResource = ObjectGenerator.buildBasicResource();
69         List<InputDefinition> inputsToMerge = ObjectGenerator.buildInputs("input1", "input2", "input3");
70         List<InputDefinition> inputsToRedeclare = ObjectGenerator.buildInputs("input4");
71         List<InputDefinition> expectedInputsToUpdate = ListUtils.union(inputsToMerge, inputsToRedeclare);
72         when(inputsValuesMergingBusinessLogicMock.getPreviouslyDeclaredInputsToMerge(oldResource, newResource)).thenReturn(inputsToRedeclare);
73         when(toscaOperationFacade.updateInputsToComponent(expectedInputsToUpdate, newResource.getUniqueId())).thenReturn(Either.left(inputsToMerge));
74         ActionStatus actionStatus = testInstance.mergeAndRedeclareComponentInputs(oldResource, newResource, inputsToMerge);
75         assertEquals(ActionStatus.OK, actionStatus);
76     }
77
78     @Test
79     public void redeclareResourceInputsForInstance() throws Exception {
80         List<InputDefinition> oldInputs = ObjectGenerator.buildInputs("input1", "input2");
81         Resource newResource = ObjectGenerator.buildBasicResource();
82         List<InputDefinition> inputsToRedeclare = ObjectGenerator.buildInputs("input1");
83         when(inputsValuesMergingBusinessLogicMock.getPreviouslyDeclaredInputsToMerge(oldInputs, newResource, "inst1")).thenReturn(inputsToRedeclare);
84         when(toscaOperationFacade.updateInputsToComponent(inputsToRedeclare, newResource.getUniqueId())).thenReturn(Either.left(inputsToRedeclare));
85         ActionStatus actionStatus = testInstance.redeclareComponentInputsForInstance(oldInputs, newResource, "inst1");
86     }
87
88     private void verifyCallToMergeComponentInputs(Resource oldResource, List<InputDefinition> inputsToMerge) {
89         Map<String, InputDefinition> oldInputsByName = oldResource.getInputs().stream().collect(Collectors.toMap(InputDefinition::getName, Function.identity()));
90         Map<String, InputDefinition> inputsToMergeByName = inputsToMerge.stream().collect(Collectors.toMap(InputDefinition::getName, Function.identity()));
91         verify(inputsValuesMergingBusinessLogicMock).mergeComponentInputs(oldInputsByName, inputsToMergeByName);
92     }
93
94 }