re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / instance / ComponentInstanceRelationMergeTest.java
index b341052..1b6aa00 100644 (file)
@@ -1,18 +1,6 @@
 package org.openecomp.sdc.be.components.merge.instance;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.IntStream;
-
+import fj.data.Either;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -21,24 +9,27 @@ import org.mockito.Captor;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.openecomp.sdc.be.components.impl.utils.ExceptionUtils;
 import org.openecomp.sdc.be.components.merge.utils.MergeInstanceUtils;
+import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder;
+import org.openecomp.sdc.be.components.utils.ResourceBuilder;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
-import org.openecomp.sdc.be.model.CapabilityDefinition;
-import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.ComponentInstance;
-import org.openecomp.sdc.be.model.RelationshipImpl;
-import org.openecomp.sdc.be.model.RelationshipInfo;
-import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
-import org.openecomp.sdc.be.model.RequirementDefinition;
-import org.openecomp.sdc.be.model.Resource;
-import org.openecomp.sdc.be.model.Service;
-import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.model.*;
 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import org.openecomp.sdc.exception.ResponseFormat;
 
-import fj.data.Either;
+import java.util.*;
+import java.util.stream.IntStream;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.tuple;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ComponentInstanceRelationMergeTest {
@@ -53,26 +44,29 @@ public class ComponentInstanceRelationMergeTest {
     private RequirementCapabilityRelDef requirementDef2;
     private RequirementCapabilityRelDef capabilityDef1;
     private RequirementCapabilityRelDef capabilityDef2;
-
+    private RequirementCapabilityRelDef capabilityDef3;
+    
+    @Mock
+    private ComponentsUtils componentsUtils;
+    
     @Mock
     private ToscaOperationFacade toscaOperationFacade;
 
     @Mock
     private User user;
 
+    @Mock
+    private ExceptionUtils exceptionUtils;
+    
     @Captor
-    ArgumentCaptor<VfRelationsMergeInfo> argumentCaptor;
-
-
+    private ArgumentCaptor<ContainerRelationsMergeInfo> argumentCaptor;
+    
+    
     @Before
     public void startUp() {
-        compInstanceRelationMerge = new ComponentInstanceRelationMerge();
-        compInstanceRelationMerge.setToscaOperationFacade(toscaOperationFacade);
-
-        MergeInstanceUtils mergeInstanceUtils = new MergeInstanceUtils();
-        mergeInstanceUtils.setToscaOperationFacade(toscaOperationFacade);
-        compInstanceRelationMerge.setMergeInstanceUtils(mergeInstanceUtils);
-
+        MergeInstanceUtils mergeInstanceUtils = new MergeInstanceUtils(toscaOperationFacade, exceptionUtils);
+        compInstanceRelationMerge = new ComponentInstanceRelationMerge(componentsUtils, mergeInstanceUtils, toscaOperationFacade);
+        
         containerComponent = new Service();
         List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
 
@@ -80,26 +74,56 @@ public class ComponentInstanceRelationMergeTest {
         resourceInstancesRelations.add(requirementDef1);
         requirementDef2 = createRequirementDef("SRV1.VF1.VFI_1", "SRV1.VF3.VFI_1", "SRV1.VF1.VFC_2.VFCI_2", "Requirement2");
         resourceInstancesRelations.add(requirementDef2);
-
-
+        
+        
         capabilityDef1 = createCapabilityDef("SRV1.VF4.VFI_1", "SRV1.VF1.VFI_1", "SRV1.VF1.VFC_3.VFCI_3", "Capability3");
         resourceInstancesRelations.add(capabilityDef1);
         capabilityDef2 = createCapabilityDef("SRV1.VF5.VFI_1", "SRV1.VF1.VFI_1", "SRV1.VF1.VFC_4.VFCI_1", "Capability4");
         resourceInstancesRelations.add(capabilityDef2);
 
-        containerComponent.setComponentInstancesRelations(resourceInstancesRelations );
 
+        capabilityDef3 = createCapabilityDef("SRV1.VF5.VFI_1", "SRV1.VF1.VFI_1", "grp1Id", "Capability5");
+        resourceInstancesRelations.add(capabilityDef3);
+
+        containerComponent.setComponentInstancesRelations(resourceInstancesRelations );
+        
         currentResourceInstance = new ComponentInstance();
         currentResourceInstance.setUniqueId("SRV1.VF1.VFI_1");
         currentResourceInstance.setComponentUid("SRV1.VF1");
         currentResourceInstance.setIsProxy(false);
-
+        
         updatedContainerComponent = new Service();
         updatedContainerComponent.setUniqueId("123123123123123123");
     }
-
+    
     @Test
     public void testSaveDataBeforeMerge() {
+        Resource vf = new ResourceBuilder()
+                .setResourceType(ResourceTypeEnum.VF)
+                .setComponentType(ComponentTypeEnum.RESOURCE)
+                .addComponentInstance(createVfci("vfc_A", "SRV1.VF1.VFC_1.VFCI_1", "SRV1.VF1.VFC_1", true))
+                .addComponentInstance(createVfci("vfc_B", "SRV1.VF1.VFC_2.VFCI_2", "SRV1.VF1.VFC_2", true))
+                .addComponentInstance(createVfci("vfc_C", "SRV1.VF1.VFC_3.VFCI_3", "SRV1.VF1.VFC_3", false))
+                .addComponentInstance(createVfci("vfc_D", "SRV1.VF1.VFC_4.VFCI_1", "SRV1.VF1.VFC_4", true))
+                .addGroup(createGroup("grp1", "grp1Id"))
+                .build();
+
+        compInstanceRelationMerge.saveDataBeforeMerge(dataHolder, containerComponent, currentResourceInstance, vf);
+        
+        verify(dataHolder).setVfRelationsInfo(argumentCaptor.capture());
+        ContainerRelationsMergeInfo relationsMergeInfo = argumentCaptor.getValue();
+        List<RelationMergeInfo> fromRelationsMergeInfo = relationsMergeInfo.getFromRelationsInfo();
+        List<RelationMergeInfo> toRelationsMergeInfo = relationsMergeInfo.getToRelationsInfo();
+        
+        assertNotNull("Expected not null list of relations merge info", fromRelationsMergeInfo);
+        assertNotNull("Expected not null list of relations merge info", toRelationsMergeInfo);
+        
+        assertEquals("Expected 2 elements", 2, fromRelationsMergeInfo.size());
+        assertEquals("Expected 2 elements", 2, toRelationsMergeInfo.size());
+    }
+    
+    @Test
+    public void testSaveDataBeforeMerge_RelationsNull() {
         Resource vf = new Resource();
 
         List<ComponentInstance> vfcInstances = new ArrayList<>();
@@ -110,32 +134,91 @@ public class ComponentInstanceRelationMergeTest {
         vf.setComponentInstances(vfcInstances);
         vf.setComponentType(ComponentTypeEnum.RESOURCE);
         vf.setResourceType(ResourceTypeEnum.VF);
-
+        
+        containerComponent.setComponentInstancesRelations(null);
         compInstanceRelationMerge.saveDataBeforeMerge(dataHolder, containerComponent, currentResourceInstance, vf);
-
-        verify(dataHolder).setVfRelationsInfo(argumentCaptor.capture());
-        VfRelationsMergeInfo relationsMergeInfo = argumentCaptor.getValue();
-        List<RelationMergeInfo> fromRelationsMergeInfo = relationsMergeInfo.getFromRelationsInfo();
-        List<RelationMergeInfo> toRelationsMergeInfo = relationsMergeInfo.getToRelationsInfo();
-
-        assertNotNull("Expected not null list of relations merge info", fromRelationsMergeInfo);
-        assertNotNull("Expected not null list of relations merge info", toRelationsMergeInfo);
-
-        assertEquals("Expected 2 elements", 2, fromRelationsMergeInfo.size());
-        assertEquals("Expected 1 elements", 1, toRelationsMergeInfo.size());
+        
+        verify(dataHolder, Mockito.never()).setVfRelationsInfo(Mockito.any());
     }
+    
+    @Test
+    public void testSaveDataBeforeMerge_RelationsEmptyList() {
+        Resource vf = new Resource();
 
+        List<ComponentInstance> vfcInstances = new ArrayList<>();
+        vfcInstances.add(createVfci("vfc_A", "SRV1.VF1.VFC_1.VFCI_1", "SRV1.VF1.VFC_1", true));
+        vfcInstances.add(createVfci("vfc_B", "SRV1.VF1.VFC_2.VFCI_2", "SRV1.VF1.VFC_2", true));
+        vfcInstances.add(createVfci("vfc_C", "SRV1.VF1.VFC_3.VFCI_3", "SRV1.VF1.VFC_3", false));
+        vfcInstances.add(createVfci("vfc_D", "SRV1.VF1.VFC_4.VFCI_1", "SRV1.VF1.VFC_4", true));
+        vf.setComponentInstances(vfcInstances);
+        vf.setComponentType(ComponentTypeEnum.RESOURCE);
+        vf.setResourceType(ResourceTypeEnum.VF);
+        
+        containerComponent.setComponentInstancesRelations(Collections.emptyList());
+        compInstanceRelationMerge.saveDataBeforeMerge(dataHolder, containerComponent, currentResourceInstance, vf);
+        
+        verify(dataHolder, Mockito.never()).setVfRelationsInfo(Mockito.any());
+    }
+    
     @Test
     public void testMergeDataAfterCreate_NoSavedData() {
+        when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(null);
         compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2");
-
-        verify(dataHolder).getVfRelationsMergeInfo();
         List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations();
         assertNull("Expected no relations", relations);
     }
 
     @Test
     public void testMergeDataAfterCreate() {
+        Resource newInstanceOriginVf = new ResourceBuilder()
+                .setResourceType(ResourceTypeEnum.VF)
+                .setComponentType(ComponentTypeEnum.RESOURCE)
+                .addComponentInstance(createVfci("vfc_A", "SRV1.VF1.VFC_1.VFCI_1", "SRV1.VF1.VFC_1", true))
+                .addComponentInstance(createVfci("vfc_B", "SRV1.VF1.VFC_2.VFCI_2", "SRV1.VF1.VFC_2", true))
+                .addComponentInstance(createVfci("vfc_C", "SRV1.VF1.VFC_3.VFCI_3", "SRV1.VF1.VFC_3", false))
+                .addComponentInstance(createVfci("vfc_D", "SRV1.VF1.VFC_4.VFCI_1", "SRV1.VF1.VFC_4", true))
+                .addGroup(createGroup("grp1", "grp1Id"))
+                .build();
+
+
+        List<ComponentInstance> componentInstances = new ArrayList<>();
+        componentInstances.add(createVfi("SRV1.VF1", "SRV1.VF1.VFI_2"));
+        updatedContainerComponent.setComponentInstances(componentInstances);
+
+        List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
+        updatedContainerComponent.setComponentInstancesRelations(resourceInstancesRelations);
+
+        List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>();
+        List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>();
+        
+        RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1);
+        fromRelationsMergeInfo.add(relationMergeInfo1);
+        RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2);
+        toRelationsMergeInfo.add(relationMergeInfo2);
+
+        RelationMergeInfo relationMergeInfo3 = new RelationMergeInfo("CapabilityType5", "capabilityE", "grp1", capabilityDef3);
+        toRelationsMergeInfo.add(relationMergeInfo3);
+        
+        ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo);
+
+        when(toscaOperationFacade.getToscaElement("SRV1.VF1")).thenReturn(Either.left(newInstanceOriginVf));
+        when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo);
+        when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.OK);
+        Either<Component, ResponseFormat> mergeResult = compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2");
+        assertTrue(mergeResult.isLeft());
+        List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations();
+        assertThat(relations)
+                .containsExactlyInAnyOrder(requirementDef1, capabilityDef2, capabilityDef3)
+                .extracting(relation -> relation.resolveSingleRelationship().getRelation().getCapabilityOwnerId(),
+                            relation -> relation.resolveSingleRelationship().getRelation().getRequirementOwnerId())
+                .containsExactlyInAnyOrder(tuple("SRV1.VF1.VFC_4.VFCI_1", null),
+                                           tuple("grp1Id", null),
+                                           tuple(null, "SRV1.VF1.VFC_1.VFCI_1"));
+    }
+    
+    
+    @Test
+    public void testMergeDataAfterCreate_FailedToAssociateResourceInstances() {
         Resource vf = new Resource();
 
         List<ComponentInstance> vfcInstances = new ArrayList<>();
@@ -146,23 +229,23 @@ public class ComponentInstanceRelationMergeTest {
         vf.setComponentInstances(vfcInstances);
         vf.setComponentType(ComponentTypeEnum.RESOURCE);
         vf.setResourceType(ResourceTypeEnum.VF);
-
+        
         Either<Component, StorageOperationStatus> eitherVF = Either.left(vf);
         when(toscaOperationFacade.getToscaElement("SRV1.VF1")).thenReturn(eitherVF);
-
-
+        
+        
         List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>();
         List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>();
-
+        
         RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1);
         fromRelationsMergeInfo.add(relationMergeInfo1);
         RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2);
         toRelationsMergeInfo.add(relationMergeInfo2);
-
-        VfRelationsMergeInfo relationsMergeInfo = new VfRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo);
-
-        when(dataHolder.getVfRelationsMergeInfo()).thenReturn(relationsMergeInfo);
-
+        
+        ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo);
+        
+        when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo);
+        
         List<ComponentInstance> componentInstances = new ArrayList<>();
         componentInstances.add(createVfi("SRV1.VF1", "SRV1.VF1.VFI_2"));
         componentInstances.add(createVfi("SRV1.VF2", "SRV1.VF2.VFI_1"));
@@ -170,34 +253,40 @@ public class ComponentInstanceRelationMergeTest {
         componentInstances.add(createVfi("SRV1.VF4", "SRV1.VF4.VFI_1"));
         componentInstances.add(createVfi("SRV1.VF5", "SRV1.VF5.VFI_1"));
         updatedContainerComponent.setComponentInstances(componentInstances);
-
+        
         List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
         updatedContainerComponent.setComponentInstancesRelations(resourceInstancesRelations);
-
-        when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.OK);
-
-        compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2");
-
-        verify(dataHolder).getVfRelationsMergeInfo();
-        verify(toscaOperationFacade).associateResourceInstances(Mockito.anyString(), Mockito.anyList());
-
-        List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations();
-        assertEquals("Expected 2 relations", 2, relations.size());
-
-
-        RequirementCapabilityRelDef capabilityRelDef = relations.get(0);
-        assertEquals("SRV1.VF1.VFC_4.VFCI_1", capabilityRelDef.resolveSingleRelationship().getRelation().getCapabilityOwnerId());
-        assertEquals("SRV1.VF5.VFI_1", capabilityRelDef.getFromNode());
-        assertEquals("SRV1.VF1.VFI_2", capabilityRelDef.getToNode());
-
-        RequirementCapabilityRelDef requirementRelDef = relations.get(1);
-        assertEquals("SRV1.VF1.VFC_1.VFCI_1", requirementRelDef.resolveSingleRelationship().getRelation().getRequirementOwnerId());
-        assertEquals("SRV1.VF1.VFI_2", requirementRelDef.getFromNode());
-        assertEquals("SRV1.VF2.VFI_1", requirementRelDef.getToNode());
+        
+        when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.GENERAL_ERROR);
+        when(componentsUtils.convertFromStorageResponse(Mockito.any())).thenReturn(ActionStatus.GENERAL_ERROR);
+        
+        ResponseFormat expectedRresponseFormat = new ResponseFormat();
+        when(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR, updatedContainerComponent.getUniqueId())).thenReturn(expectedRresponseFormat );
+
+        Either<Component, ResponseFormat> result = compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2");
+        assertTrue(result.isRight());
+        assertEquals(expectedRresponseFormat, result.right().value());
     }
-
-
-
+    
+    @Test
+    public void testMergeDataAfterCreate_UpdatedContainerEmpty() {
+        List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>();
+        List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>();
+        
+        RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1);
+        fromRelationsMergeInfo.add(relationMergeInfo1);
+        RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2);
+        toRelationsMergeInfo.add(relationMergeInfo2);
+        
+        ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo);
+        
+        when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo);
+        
+        Either<Component, ResponseFormat> result = compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2");
+        assertTrue(result.isLeft());
+        assertEquals(updatedContainerComponent, result.left().value());
+    }
+    
     @Test
     public void testMergeDataAfterCreate_OwnerChanged() {
         Resource vf = new Resource();
@@ -210,23 +299,23 @@ public class ComponentInstanceRelationMergeTest {
         vf.setComponentInstances(vfcInstances);
         vf.setComponentType(ComponentTypeEnum.RESOURCE);
         vf.setResourceType(ResourceTypeEnum.VF);
-
+        
         Either<Component, StorageOperationStatus> eitherVF = Either.left(vf);
         when(toscaOperationFacade.getToscaElement("SRV1.VF1")).thenReturn(eitherVF);
-
-
+        
+        
         List<RelationMergeInfo> fromRelationsMergeInfo = new ArrayList<>();
         List<RelationMergeInfo> toRelationsMergeInfo = new ArrayList<>();
-
+        
         RelationMergeInfo relationMergeInfo1 = new RelationMergeInfo("CapabilityType1", "capabilityA", "vfc_A", requirementDef1);
         fromRelationsMergeInfo.add(relationMergeInfo1);
         RelationMergeInfo relationMergeInfo2 = new RelationMergeInfo("CapabilityType4", "capabilityD", "vfc_D", capabilityDef2);
         toRelationsMergeInfo.add(relationMergeInfo2);
-
-        VfRelationsMergeInfo relationsMergeInfo = new VfRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo);
-
-        when(dataHolder.getVfRelationsMergeInfo()).thenReturn(relationsMergeInfo);
-
+        
+        ContainerRelationsMergeInfo relationsMergeInfo = new ContainerRelationsMergeInfo(fromRelationsMergeInfo, toRelationsMergeInfo);
+        
+        when(dataHolder.getContainerRelationsMergeInfo()).thenReturn(relationsMergeInfo);
+        
         List<ComponentInstance> componentInstances = new ArrayList<>();
         componentInstances.add(createVfi("SRV1.VF1", "SRV1.VF1.VFI_2"));
         componentInstances.add(createVfi("SRV1.VF2", "SRV1.VF2.VFI_1"));
@@ -234,26 +323,26 @@ public class ComponentInstanceRelationMergeTest {
         componentInstances.add(createVfi("SRV1.VF4", "SRV1.VF4.VFI_1"));
         componentInstances.add(createVfi("SRV1.VF5", "SRV1.VF5.VFI_1"));
         updatedContainerComponent.setComponentInstances(componentInstances);
-
+        
         List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
         updatedContainerComponent.setComponentInstancesRelations(resourceInstancesRelations);
-
+        
         when(toscaOperationFacade.associateResourceInstances(Mockito.anyString(), Mockito.anyList())).thenReturn(StorageOperationStatus.OK);
-
+        
         compInstanceRelationMerge.mergeDataAfterCreate(user, dataHolder, updatedContainerComponent, "SRV1.VF1.VFI_2");
-
-        verify(dataHolder).getVfRelationsMergeInfo();
+        
+        verify(dataHolder).getContainerRelationsMergeInfo();
         verify(toscaOperationFacade).associateResourceInstances(Mockito.anyString(), Mockito.anyList());
-
+        
         List<RequirementCapabilityRelDef> relations = updatedContainerComponent.getComponentInstancesRelations();
         assertEquals("Expected 2 relations", 2, relations.size());
-
-
+        
+        
         RequirementCapabilityRelDef capabilityRelDef = relations.get(0);
         assertEquals("SRV1.VF1.VFC_4.VFCI_2", capabilityRelDef.resolveSingleRelationship().getRelation().getCapabilityOwnerId());
         assertEquals("SRV1.VF5.VFI_1", capabilityRelDef.getFromNode());
         assertEquals("SRV1.VF1.VFI_2", capabilityRelDef.getToNode());
-
+        
         RequirementCapabilityRelDef requirementRelDef = relations.get(1);
         assertEquals("SRV1.VF1.VFC_1.VFCI_2", requirementRelDef.resolveSingleRelationship().getRelation().getRequirementOwnerId());
         assertEquals("SRV1.VF1.VFI_2", requirementRelDef.getFromNode());
@@ -270,18 +359,18 @@ public class ComponentInstanceRelationMergeTest {
         ComponentInstance vfi = new ComponentInstance();
         vfi.setUniqueId(vfiUniqueId);
         vfi.setComponentUid(vfId);
-
+        
         Resource vf = new Resource();
         vf.setUniqueId(vfId);
         return vfi;
     }
-
+    
     private ComponentInstance createVfci(String name, String uniqueId, String componentUid, boolean foundVfc) {
         ComponentInstance compInst = new ComponentInstance();
         compInst.setName(name);
         compInst.setUniqueId(uniqueId);
         compInst.setComponentUid(componentUid);
-
+        
         if(foundVfc) {
             createVfc(componentUid);
         }
@@ -291,6 +380,14 @@ public class ComponentInstanceRelationMergeTest {
         return compInst;
     }
 
+    public GroupDefinition createGroup(String name, String id) {
+        return GroupDefinitionBuilder.create()
+                .setUniqueId(id)
+                .setInvariantName(name)
+                .build();
+
+    }
+    
     private void failLoadVfc(String uid) {
         Either<Component, StorageOperationStatus> eitherVFC = Either.right(StorageOperationStatus.NOT_FOUND);
         when(toscaOperationFacade.getToscaElement(uid)).thenReturn(eitherVFC);
@@ -298,12 +395,13 @@ public class ComponentInstanceRelationMergeTest {
 
     private Component createVfc(String uid) {
         Resource vfc = new Resource();
+        vfc.setComponentType(ComponentTypeEnum.RESOURCE);
         vfc.setUniqueId(uid);
-
+        
         Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
         Map<String, List<RequirementDefinition>> requirements = new HashMap<>();;
         IntStream.range(0, 5).forEach(i -> {
-
+            
             List<CapabilityDefinition> capList = new LinkedList<>();
             capList.add(null);
             CapabilityDefinition capDef = new CapabilityDefinition();
@@ -312,7 +410,7 @@ public class ComponentInstanceRelationMergeTest {
             capDef.setType("CapabilityType" + i);
             capList.add(capDef);
             capabilities.put("Key" + i, capList);
-
+            
             List<RequirementDefinition> reqList = new LinkedList<>();
             reqList.add(null);
             RequirementDefinition reqDef = new RequirementDefinition();
@@ -321,59 +419,59 @@ public class ComponentInstanceRelationMergeTest {
             reqDef.setCapability("CapabilityType" + i);
             reqList.add(reqDef);
             requirements.put("Key" + i, reqList);
-
+            
         });
         vfc.setCapabilities(capabilities );
         vfc.setRequirements(requirements);
-
+        
         Either<Component, StorageOperationStatus> eitherVFC = Either.left(vfc);
         when(toscaOperationFacade.getToscaElement(uid)).thenReturn(eitherVFC);
-
+        
         return vfc;
     }
-
+    
     private RequirementCapabilityRelDef createRequirementCapabilityDef(String fromNode, String toNode) {
         RequirementCapabilityRelDef reqCapDef = new RequirementCapabilityRelDef();
-
+        
         reqCapDef.setFromNode(fromNode);
         reqCapDef.setToNode(toNode);
-
+        
         List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
         CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
         relationships.add(capabilityRequirementRelationship);
         reqCapDef.setRelationships(relationships);
-
+        
         return reqCapDef;
     }
 
     private RequirementCapabilityRelDef createRequirementDef(String fromNode, String toNode, String ownerId, String requirementUid) {
         RequirementCapabilityRelDef reqCapDef = createRequirementCapabilityDef(fromNode, toNode);
         CapabilityRequirementRelationship capabilityRequirementRelationship = reqCapDef.resolveSingleRelationship();
-
+        
         RelationshipInfo relationshipInfo = new RelationshipInfo();
         relationshipInfo.setRequirementOwnerId(ownerId);
         relationshipInfo.setRequirementUid(requirementUid);
         relationshipInfo.setRelationships(new RelationshipImpl());
         capabilityRequirementRelationship.setRelation(relationshipInfo );
-
-
-
+        
+        
+        
         return reqCapDef;
     }
-
+    
     private RequirementCapabilityRelDef createCapabilityDef(String fromNode, String toNode, String ownerId, String capabilityUid) {
         RequirementCapabilityRelDef reqCapDef = createRequirementCapabilityDef(fromNode, toNode);
         CapabilityRequirementRelationship capabilityRequirementRelationship = reqCapDef.resolveSingleRelationship();
-
+        
         RelationshipInfo relationshipInfo = new RelationshipInfo();
         relationshipInfo.setCapabilityOwnerId(ownerId);
         relationshipInfo.setCapabilityUid(capabilityUid);
         relationshipInfo.setRelationships(new RelationshipImpl());
         capabilityRequirementRelationship.setRelation(relationshipInfo );
-
+        
         return reqCapDef;
     }
 
-
+    
 
 }