8071749fdf205cf3b36ec05482167f8ccdab7f51
[sdc.git] /
1 package org.openecomp.sdc.be.components.merge.capability;
2
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;
7
8 import java.util.Map;
9
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;
23
24 import com.google.common.collect.ImmutableMap;
25
26 @RunWith(MockitoJUnitRunner.class)
27 public class SimpleCapabilityResolverTest {
28
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";
34     @InjectMocks
35     private SimpleCapabilityResolver testInstance;
36     @Mock
37     private MergeInstanceUtils MergeInstanceUtils;
38
39     private CapabilityDefinition capName1Owner1Type1;
40     private CapabilityDefinition capName1Owner1Type2;
41     private CapabilityDefinition capName1Owner2Type1;
42     private CapabilityDefinition capName2Owner1Type2;
43
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;
54
55
56     @Before
57     public void setUp() {
58         capName1Owner1Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID1).setType("type1").build();
59         prevCapName1Owner1Type1 = new CapabilityDefinition(capName1Owner1Type1);
60         prevCapName1Owner1Type1.setOwnerId(OLD_OWNER_ID1);
61
62         capName1Owner1Type2 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID1).setType("type2").build();
63         prevCapName1Owner1Type2 = new CapabilityDefinition(capName1Owner1Type2);
64         prevCapName1Owner1Type2.setOwnerId(OLD_OWNER_ID1);
65
66         capName1Owner2Type1 = new CapabilityDefinitionBuilder().setName("name1").setOwnerId(NEW_OWNER_ID2).setType("type1").build();
67         prevCapName1Owner2Type1 = new CapabilityDefinition(capName1Owner2Type1);
68         prevCapName1Owner2Type1.setOwnerId(OLD_OWNER_ID2);
69
70         capName2Owner1Type2 = new CapabilityDefinitionBuilder().setName("name2").setOwnerId(NEW_OWNER_ID1).setType("type2").build();
71         prevCapName2Owner1Type2 = new CapabilityDefinition(capName2Owner1Type2);
72         prevCapName2Owner1Type2.setOwnerId(OLD_OWNER_ID1);
73
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();
78
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();
82     }
83
84     @Test
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);
93     }
94
95     @Test
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();
100     }
101
102     @Test
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);
113     }
114 }