1 package org.openecomp.sdc.be.components.merge.capability;
3 import com.google.common.collect.ImmutableMap;
4 import org.junit.Before;
6 import org.junit.runner.RunWith;
7 import org.mockito.InjectMocks;
8 import org.mockito.Mock;
9 import org.mockito.junit.MockitoJUnitRunner;
10 import org.openecomp.sdc.be.components.merge.utils.MergeInstanceUtils;
11 import org.openecomp.sdc.be.components.utils.CapabilityDefinitionBuilder;
12 import org.openecomp.sdc.be.components.utils.ComponentInstanceBuilder;
13 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
14 import org.openecomp.sdc.be.model.CapabilityDefinition;
15 import org.openecomp.sdc.be.model.ComponentInstance;
16 import org.openecomp.sdc.be.model.Resource;
20 import static java.util.Arrays.asList;
21 import static java.util.Collections.emptyMap;
22 import static org.assertj.core.api.Assertions.assertThat;
23 import static org.mockito.Mockito.when;
25 @RunWith(MockitoJUnitRunner.class)
26 public class SimpleCapabilityResolverTest {
28 public static final String NEW_OWNER_ID1 = "owner1";
29 public static final String NEW_OWNER_ID2 = "owner2";
30 public static final String OLD_OWNER_ID1 = "oldOwner1";
31 private static final String OLD_OWNER_ID2 = "oldOwner2";
32 public static final String OLD_OWNER_ID3 = "oldOwner3";
34 private SimpleCapabilityResolver testInstance;
36 private MergeInstanceUtils MergeInstanceUtils;
38 private CapabilityDefinition capName1Owner1Type1;
39 private CapabilityDefinition capName1Owner1Type2;
40 private CapabilityDefinition capName1Owner2Type1;
41 private CapabilityDefinition capName2Owner1Type2;
43 private CapabilityDefinition prevCapName1Owner1Type1;
44 private CapabilityDefinition prevCapName1Owner1Type2;
45 private CapabilityDefinition prevCapName1Owner2Type1;
46 private CapabilityDefinition prevCapName2Owner1Type2;
47 private CapabilityDefinition prevCapName1Owner3Type1;
48 private CapabilityDefinition prevCapName3Owner1Type1;
49 private CapabilityDefinition prevCapName1Owner1Type3;
50 CapabilityDefinition[] prevCapabilities;
51 private ComponentInstance oldInstance;
52 private ComponentInstance currInstance;
57 capName1Owner1Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID1).setType("type1").build();
58 prevCapName1Owner1Type1 = new CapabilityDefinition(capName1Owner1Type1);
59 prevCapName1Owner1Type1.setOwnerId(OLD_OWNER_ID1);
61 capName1Owner1Type2 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID1).setType("type2").build();
62 prevCapName1Owner1Type2 = new CapabilityDefinition(capName1Owner1Type2);
63 prevCapName1Owner1Type2.setOwnerId(OLD_OWNER_ID1);
65 capName1Owner2Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID2).setType("type1").build();
66 prevCapName1Owner2Type1 = new CapabilityDefinition(capName1Owner2Type1);
67 prevCapName1Owner2Type1.setOwnerId(OLD_OWNER_ID2);
69 capName2Owner1Type2 = new CapabilityDefinitionBuilder().setName("name2").setOwnerId(NEW_OWNER_ID1).setType("type2").build();
70 prevCapName2Owner1Type2 = new CapabilityDefinition(capName2Owner1Type2);
71 prevCapName2Owner1Type2.setOwnerId(OLD_OWNER_ID1);
73 //prev capabilities that are not mapped to any new capability
74 prevCapName1Owner3Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(OLD_OWNER_ID3).setType("type1").build();
75 prevCapName3Owner1Type1 = new CapabilityDefinitionBuilder().setName("name3").setOwnerId(OLD_OWNER_ID1).setType("type1").build();
76 prevCapName1Owner1Type3 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(OLD_OWNER_ID1).setType("type3").build();
78 currInstance = new ComponentInstanceBuilder().setId("inst1").addCapabilities(capName1Owner1Type1, capName1Owner1Type2, capName1Owner2Type1, capName2Owner1Type2).build();
79 prevCapabilities = new CapabilityDefinition[]{prevCapName1Owner1Type1, prevCapName1Owner1Type2, prevCapName1Owner2Type1, prevCapName2Owner1Type2, prevCapName1Owner3Type1, prevCapName3Owner1Type1, prevCapName1Owner1Type3};
80 oldInstance = new ComponentInstanceBuilder().setId("inst1").addCapabilities(prevCapabilities).build();
84 public void resolvePrevCapIdToNewCapability_resolveByTypeNameAndNewOwnerId() {
85 when(MergeInstanceUtils.mapOldToNewCapabilitiesOwnerIds(oldInstance, currInstance)).thenReturn(ImmutableMap.of(OLD_OWNER_ID1, NEW_OWNER_ID1, OLD_OWNER_ID2, NEW_OWNER_ID2));
86 Map<CapabilityDefinition, CapabilityDefinition> oldToNewMap = testInstance.resolvePrevCapIdToNewCapability(oldInstance, currInstance);
87 assertThat(oldToNewMap).hasSize(4);
88 assertThat(oldToNewMap).containsEntry(prevCapName1Owner1Type1, capName1Owner1Type1);
89 assertThat(oldToNewMap).containsEntry(prevCapName1Owner1Type2, capName1Owner1Type2);
90 assertThat(oldToNewMap).containsEntry(prevCapName1Owner2Type1, capName1Owner2Type1);
91 assertThat(oldToNewMap).containsEntry(prevCapName2Owner1Type2, capName2Owner1Type2);
95 public void resolvePrevCapIdToNewCapability_noMatchingNewOwnerIds() {
96 when(MergeInstanceUtils.mapOldToNewCapabilitiesOwnerIds(oldInstance, currInstance)).thenReturn(emptyMap());
97 Map<CapabilityDefinition, CapabilityDefinition> oldToNewMap = testInstance.resolvePrevCapIdToNewCapability(oldInstance, currInstance);
98 assertThat(oldToNewMap).isEmpty();
102 public void mapOldToNewInstanceCapabilitiesOwnerIds() {
103 Resource container = new ResourceBuilder().addComponentInstance(currInstance).build();
104 Resource prevInstanceOrigNode = new Resource();
105 when(MergeInstanceUtils.mapOldToNewCapabilitiesOwnerIds(container, prevInstanceOrigNode, "inst1", asList(OLD_OWNER_ID1, OLD_OWNER_ID2, OLD_OWNER_ID3))).thenReturn(ImmutableMap.of(OLD_OWNER_ID1, NEW_OWNER_ID1, OLD_OWNER_ID2, NEW_OWNER_ID2));
106 Map<CapabilityDefinition, CapabilityDefinition> oldToNewMap = testInstance.resolvePrevCapToNewCapability(container, prevInstanceOrigNode, "inst1", asList(prevCapabilities));
107 assertThat(oldToNewMap).hasSize(4);
108 assertThat(oldToNewMap).containsEntry(prevCapName1Owner1Type1, capName1Owner1Type1);
109 assertThat(oldToNewMap).containsEntry(prevCapName1Owner1Type2, capName1Owner1Type2);
110 assertThat(oldToNewMap).containsEntry(prevCapName1Owner2Type1, capName1Owner2Type1);
111 assertThat(oldToNewMap).containsEntry(prevCapName2Owner1Type2, capName2Owner1Type2);