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