Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / capability / SimpleCapabilityResolverTest.java
1 package org.openecomp.sdc.be.components.merge.capability;
2
3 import com.google.common.collect.ImmutableMap;
4 import org.junit.Before;
5 import org.junit.Test;
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;
17
18 import java.util.Map;
19
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;
24
25 @RunWith(MockitoJUnitRunner.class)
26 public class SimpleCapabilityResolverTest {
27
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";
33     @InjectMocks
34     private SimpleCapabilityResolver testInstance;
35     @Mock
36     private MergeInstanceUtils MergeInstanceUtils;
37
38     private CapabilityDefinition capName1Owner1Type1;
39     private CapabilityDefinition capName1Owner1Type2;
40     private CapabilityDefinition capName1Owner2Type1;
41     private CapabilityDefinition capName2Owner1Type2;
42
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;
53
54
55     @Before
56     public void setUp() {
57         capName1Owner1Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID1).setType("type1").build();
58         prevCapName1Owner1Type1 = new CapabilityDefinition(capName1Owner1Type1);
59         prevCapName1Owner1Type1.setOwnerId(OLD_OWNER_ID1);
60
61         capName1Owner1Type2 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID1).setType("type2").build();
62         prevCapName1Owner1Type2 = new CapabilityDefinition(capName1Owner1Type2);
63         prevCapName1Owner1Type2.setOwnerId(OLD_OWNER_ID1);
64
65         capName1Owner2Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID2).setType("type1").build();
66         prevCapName1Owner2Type1 = new CapabilityDefinition(capName1Owner2Type1);
67         prevCapName1Owner2Type1.setOwnerId(OLD_OWNER_ID2);
68
69         capName2Owner1Type2 = new CapabilityDefinitionBuilder().setName("name2").setOwnerId(NEW_OWNER_ID1).setType("type2").build();
70         prevCapName2Owner1Type2 = new CapabilityDefinition(capName2Owner1Type2);
71         prevCapName2Owner1Type2.setOwnerId(OLD_OWNER_ID1);
72
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();
77
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();
81     }
82
83     @Test
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);
92     }
93
94     @Test
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();
99     }
100
101     @Test
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);
112     }
113 }