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