1 package org.openecomp.sdc.be.components.merge.input;
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.verify;
5 import static org.mockito.Mockito.when;
9 import java.util.function.Function;
10 import java.util.stream.Collectors;
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;
25 import fj.data.Either;
27 public class ComponentInputsMergeBLTest {
30 private ComponentInputsMergeBL testInstance;
33 private InputsValuesMergingBusinessLogic inputsValuesMergingBusinessLogicMock;
36 private ToscaOperationFacade toscaOperationFacade;
39 public void setUp() throws Exception {
40 MockitoAnnotations.initMocks(this);
44 public void mergeComponentInputs() {
45 Resource oldResource = new ResourceBuilder()
50 Resource newResource = new Resource();
52 List<InputDefinition> inputsToMerge = ObjectGenerator.buildInputs("input1", "input2", "input3");
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);
60 @SuppressWarnings("unchecked")
62 public void mergeAndRedeclareComponentInputs() throws Exception {
63 Resource oldResource = new ResourceBuilder()
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);
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");
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);