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