1 package org.openecomp.sdc.be.components.merge.input;
4 import org.apache.commons.collections.ListUtils;
5 import org.junit.Before;
7 import org.mockito.InjectMocks;
8 import org.mockito.Mock;
9 import org.mockito.MockitoAnnotations;
10 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
11 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
12 import org.openecomp.sdc.be.dao.api.ActionStatus;
13 import org.openecomp.sdc.be.model.InputDefinition;
14 import org.openecomp.sdc.be.model.Resource;
15 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
17 import java.util.List;
19 import java.util.function.Function;
20 import java.util.stream.Collectors;
22 import static org.junit.Assert.assertEquals;
23 import static org.mockito.Mockito.verify;
24 import static org.mockito.Mockito.when;
26 public class ComponentInputsMergeBLTest {
29 private ComponentInputsMergeBL testInstance;
32 private InputsValuesMergingBusinessLogic inputsValuesMergingBusinessLogicMock;
35 private ToscaOperationFacade toscaOperationFacade;
38 public void setUp() throws Exception {
39 MockitoAnnotations.initMocks(this);
43 public void mergeComponentInputs() {
44 Resource oldResource = new ResourceBuilder()
49 Resource newResource = new Resource();
51 List<InputDefinition> inputsToMerge = ObjectGenerator.buildInputs("input1", "input2", "input3");
53 when(toscaOperationFacade.updateInputsToComponent(inputsToMerge, newResource.getUniqueId())).thenReturn(Either.left(inputsToMerge));
54 ActionStatus actionStatus = testInstance.mergeComponentInputs(oldResource, newResource, inputsToMerge);
55 assertEquals(ActionStatus.OK, actionStatus);
56 verifyCallToMergeComponentInputs(oldResource, inputsToMerge);
59 @SuppressWarnings("unchecked")
61 public void mergeAndRedeclareComponentInputs() throws Exception {
62 Resource oldResource = new ResourceBuilder()
67 Resource newResource = ObjectGenerator.buildBasicResource();
68 List<InputDefinition> inputsToMerge = ObjectGenerator.buildInputs("input1", "input2", "input3");
69 List<InputDefinition> inputsToRedeclare = ObjectGenerator.buildInputs("input4");
70 List<InputDefinition> expectedInputsToUpdate = ListUtils.union(inputsToMerge, inputsToRedeclare);
71 when(inputsValuesMergingBusinessLogicMock.getPreviouslyDeclaredInputsToMerge(oldResource, newResource)).thenReturn(inputsToRedeclare);
72 when(toscaOperationFacade.updateInputsToComponent(expectedInputsToUpdate, newResource.getUniqueId())).thenReturn(Either.left(inputsToMerge));
73 ActionStatus actionStatus = testInstance.mergeAndRedeclareComponentInputs(oldResource, newResource, inputsToMerge);
74 assertEquals(ActionStatus.OK, actionStatus);
78 public void redeclareResourceInputsForInstance() throws Exception {
79 List<InputDefinition> oldInputs = ObjectGenerator.buildInputs("input1", "input2");
80 Resource newResource = ObjectGenerator.buildBasicResource();
81 List<InputDefinition> inputsToRedeclare = ObjectGenerator.buildInputs("input1");
82 when(inputsValuesMergingBusinessLogicMock.getPreviouslyDeclaredInputsToMerge(oldInputs, newResource, "inst1")).thenReturn(inputsToRedeclare);
83 when(toscaOperationFacade.updateInputsToComponent(inputsToRedeclare, newResource.getUniqueId())).thenReturn(Either.left(inputsToRedeclare));
84 ActionStatus actionStatus = testInstance.redeclareComponentInputsForInstance(oldInputs, newResource, "inst1");
87 private void verifyCallToMergeComponentInputs(Resource oldResource, List<InputDefinition> inputsToMerge) {
88 Map<String, InputDefinition> oldInputsByName = oldResource.getInputs().stream().collect(Collectors.toMap(InputDefinition::getName, Function.identity()));
89 Map<String, InputDefinition> inputsToMergeByName = inputsToMerge.stream().collect(Collectors.toMap(InputDefinition::getName, Function.identity()));
90 verify(inputsValuesMergingBusinessLogicMock).mergeComponentInputs(oldInputsByName, inputsToMergeByName);