[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / impl / ComponentDependencyModelTest.java
1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
2
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.Mockito;
6 import org.mockito.MockitoAnnotations;
7 import org.mockito.Spy;
8 import org.openecomp.core.utilities.CommonMethods;
9 import org.openecomp.sdc.common.errors.CoreException;
10 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManager;
11 import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManagerFactory;
12 import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
13 import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager;
14 import org.openecomp.sdc.vendorsoftwareproduct.VspManagerFactory;
15 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
18 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
19 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
20 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
21 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
22 import org.openecomp.sdc.vendorsoftwareproduct.errors.ComponentDependencyModelErrorBuilder;
23 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentData;
24 import org.openecomp.sdc.versioning.dao.types.Version;
25 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
26 import org.testng.Assert;
27 import org.testng.annotations.BeforeClass;
28 import org.testng.annotations.Test;
29
30 import java.util.ArrayList;
31 import java.util.Collection;
32 import java.util.List;
33
34 import static org.mockito.Mockito.doReturn;
35
36 public class ComponentDependencyModelTest {
37
38   @Spy
39   @InjectMocks
40   private ComponentDependencyModelManagerImpl componentDependencyModelManager;
41   @Mock
42   private VendorSoftwareProductManager vendorSoftwareProductManager;
43   @Mock
44   private VendorSoftwareProductDao vendorSoftwareProductDao;
45   @Mock
46   private ComponentDao componentDao;
47   @Mock
48   private ComponentManager componentManager;
49
50   private static String vsp1Id;
51   private static String sourceComp1Id;
52   private static String sourceComp2Id;
53   private static String sourceComp3Id;
54   private static String sourceComp4Id;
55   private static final String USER1 = "TestUser1";
56   private static final String USER2 = "TestUser2";
57   private static final Version VERSION01 = new Version(0, 1);
58   private static String modelId = "model1";
59
60
61   @BeforeClass
62   private void init() {
63     MockitoAnnotations.initMocks(this);
64   }
65
66   public static VspDetails createVspDetails(String id, Version version, String name, String desc,
67                                             String vendorName, String vlm, String icon,
68                                             String category, String subCategory,
69                                             String licenseAgreement, List<String> featureGroups
70   ) {
71     VspDetails vspDetails = new VspDetails(id, version);
72     vspDetails.setName(name);
73     vspDetails.setDescription(desc);
74     vspDetails.setIcon(icon);
75     vspDetails.setCategory(category);
76     vspDetails.setSubCategory(subCategory);
77     vspDetails.setVendorName(vendorName);
78     vspDetails.setVendorId(vlm);
79     vspDetails.setVlmVersion(new Version(1, 0));
80     vspDetails.setLicenseAgreement(licenseAgreement);
81     vspDetails.setFeatureGroups(featureGroups);
82     return vspDetails;
83   }
84
85   @Test
86   public void testCreateNegative_NoSourceId() {
87     List<ComponentDependencyModelEntity> entities = new ArrayList<ComponentDependencyModelEntity>();
88     entities.add(createModelEntity(null, sourceComp2Id));
89     testCreate_negative(entities, vsp1Id, VERSION01, USER1,
90         ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().id(),
91         ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().message());
92
93     entities.removeAll(entities);
94     entities.add(createModelEntity("", sourceComp2Id));
95     testCreate_negative(entities, vsp1Id, VERSION01, USER1,
96         ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().id(),
97         ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().message());
98   }
99
100   @Test
101   public void testCreateNegative_SameSourceTarget() {
102     List<ComponentDependencyModelEntity> entities = new ArrayList<ComponentDependencyModelEntity>();
103     entities.add(createModelEntity("sourceComp1Id", "sourceComp1Id"));
104     testCreate_negative(entities, vsp1Id, VERSION01, USER1,
105         ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder().id(),
106         ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder().message());
107   }
108
109   @Test
110   public void testCreate() {
111     List<ComponentDependencyModelEntity> entities = new ArrayList<ComponentDependencyModelEntity>();
112     entities.add(createModelEntity("sourceComp1Id", "sourceComp2Id"));
113     entities.add(createModelEntity("sourceComp3Id", "sourceComp4Id"));
114
115     componentDependencyModelManager.createComponentDependencyModel(entities, vsp1Id, VERSION01,
116         USER1);
117     Mockito.verify(vendorSoftwareProductDao, Mockito.times(1)).createComponentDependencyModel
118         (entities, vsp1Id,
119         VERSION01);
120   }
121
122   private ComponentDependencyModelEntity createModelEntity(String sourceId, String targetId) {
123     ComponentDependencyModelEntity entity =
124         new ComponentDependencyModelEntity(vsp1Id, VERSION01, modelId);
125     entity.setSourceComponentId(sourceId);
126     entity.setTargetComponentId(targetId);
127     entity.setRelation("dependsOn");
128     return entity;
129   }
130
131   private Collection<ComponentDependencyModelEntity> getDependencyModel(String vspId,
132                                                                         Version version,
133                                                                         String user) {
134     return componentDependencyModelManager.list(vspId, version, user);
135   }
136
137   private void testCreate_negative(List<ComponentDependencyModelEntity> entities, String vspId,
138                                    Version version, String user,
139                                    String expectedErrorCode, String expectedErrorMsg) {
140     try {
141       componentDependencyModelManager.createComponentDependencyModel(entities, vspId, version,
142         user);
143       Assert.fail();
144     } catch (CoreException exception) {
145       Assert.assertEquals(exception.code().id(), expectedErrorCode);
146       Assert.assertEquals(exception.getMessage(), expectedErrorMsg);
147     }
148   }
149 }