re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / merge / RelationsComparatorTest.java
1 package org.openecomp.sdc.be.components.merge;
2
3 import org.junit.Before;
4 import org.junit.Test;
5 import org.openecomp.sdc.be.components.utils.ComponentInstanceBuilder;
6 import org.openecomp.sdc.be.components.utils.ObjectGenerator;
7 import org.openecomp.sdc.be.components.utils.RelationsBuilder;
8 import org.openecomp.sdc.be.model.ComponentInstance;
9 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
10 import org.openecomp.sdc.be.model.Resource;
11
12 import java.util.Arrays;
13 import java.util.LinkedList;
14
15 import static org.junit.Assert.assertFalse;
16 import static org.junit.Assert.assertTrue;
17
18 public class RelationsComparatorTest {
19
20     public static final String INSTANCE1 = "instance1";
21     public static final String INSTANCE2 = "instance2";
22     RelationsComparator testInstance;
23
24     private RequirementCapabilityRelDef relation1;
25     private RequirementCapabilityRelDef relation2;
26     private RequirementCapabilityRelDef relation3;
27     private RequirementCapabilityRelDef relation4;
28     private ComponentInstance componentInstance1;
29     private ComponentInstance componentInstance2;
30
31     @Before
32     public void setUp() {
33         testInstance = new RelationsComparator();
34         componentInstance1 =  new ComponentInstanceBuilder().setName(INSTANCE1).setId(INSTANCE1).build();
35         componentInstance2 =  new ComponentInstanceBuilder().setName(INSTANCE2).setId(INSTANCE2).build();
36         buildRelations();
37     }
38
39     @Test
40     public void isRelationsChanged_sameRelationships() throws Exception {
41         Resource oldResource = ObjectGenerator.buildResourceWithRelationships(relation1, relation2, relation3, relation4);
42         oldResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
43         Resource newResource = ObjectGenerator.buildResourceWithRelationships(relation4, relation3, relation1, relation2);
44         newResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
45         assertFalse(testInstance.isRelationsChanged(oldResource, newResource));
46     }
47     
48     @Test
49     public void isRelationsChanged_OldResourceNull() throws Exception {
50         Resource oldResource = ObjectGenerator.buildResourceWithRelationships();
51         oldResource.setComponentInstancesRelations(new LinkedList<>());
52         oldResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
53         Resource newResource = ObjectGenerator.buildResourceWithRelationships(relation4, relation3, relation1, relation2);
54         newResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
55         assertTrue(testInstance.isRelationsChanged(oldResource, newResource));
56     }
57     
58     @Test
59     public void isRelationsChanged_notSameAmountOfRelations()  {
60         Resource oldResource = ObjectGenerator.buildResourceWithRelationships(relation1, relation2);
61         oldResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
62         Resource newResource = ObjectGenerator.buildResourceWithRelationships(relation1, relation2, relation3);
63         newResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
64         assertTrue(testInstance.isRelationsChanged(oldResource, newResource));
65     }
66
67     @Test
68     public void isRelationsChanged_notSameFromNode() throws Exception {
69         RequirementCapabilityRelDef relation2DifType = buildRelation("2", INSTANCE1);
70         relation2DifType.setFromNode(INSTANCE2);
71         isRelationsChangedTest(relation2DifType);
72     }
73
74     @Test
75     public void isRelationsChanged_notSameType() throws Exception {
76         RequirementCapabilityRelDef relation2DifType = buildRelation("2", INSTANCE1);
77         relation2DifType.resolveSingleRelationship().getRelation().getRelationship().setType("someDiffType");
78         isRelationsChangedTest(relation2DifType);
79     }
80
81     @Test
82     public void isRelationsChanged_notSameCapability() throws Exception {
83         RequirementCapabilityRelDef relation2DifType = buildRelation("2", INSTANCE1);
84         relation2DifType.resolveSingleRelationship().getRelation().setCapabilityUid("someDiffUid");
85         isRelationsChangedTest(relation2DifType);
86     }
87
88     @Test
89     public void isRelationsChanged_notSameReqName() throws Exception {
90         RequirementCapabilityRelDef relation2DifType = buildRelation("2", INSTANCE1);
91         relation2DifType.resolveSingleRelationship().getRelation().setRequirement("someDiffReq");
92         isRelationsChangedTest(relation2DifType);
93     }
94
95     @Test
96     public void isRelationsChanged_notSameToNode() throws Exception {
97         RequirementCapabilityRelDef relation2DifType = buildRelation("2", INSTANCE1);
98         relation2DifType.setToNode("someDiffNode");
99         isRelationsChangedTest(relation2DifType);
100     }
101
102     private void isRelationsChangedTest(RequirementCapabilityRelDef relation2DifType) {
103         Resource oldResource = ObjectGenerator.buildResourceWithRelationships(relation1, relation2);
104         oldResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
105         Resource newResource = ObjectGenerator.buildResourceWithRelationships(relation1, relation2DifType);
106         newResource.setComponentInstances(Arrays.asList(componentInstance1, componentInstance2));
107         assertTrue(testInstance.isRelationsChanged(oldResource, newResource));
108     }
109
110
111     private void buildRelations() {
112         relation1 = buildRelation("1", INSTANCE1);
113         relation2 = buildRelation("2", INSTANCE1);
114         relation3 = buildRelation("3", INSTANCE2);
115         relation4 = buildRelation("4", INSTANCE2);
116     }
117
118     private RequirementCapabilityRelDef buildRelation(String postFix, String instance) {
119         return new RelationsBuilder()
120                 .setFromNode(instance)
121                 .setCapabilityUID("cap" + postFix)
122                 .setRelationType("type" + postFix)
123                 .setRequirementName("req" + postFix)
124                 .setToNode(instance)
125                 .build();
126     }
127 }