aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentDependencyModelTest.java
blob: c6374375f9c537741445400d7e520580af107631 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package org.openecomp.sdc.vendorsoftwareproduct.impl;

import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import org.openecomp.core.utilities.CommonMethods;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManager;
import org.openecomp.sdc.vendorsoftwareproduct.ComponentDependencyModelManagerFactory;
import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager;
import org.openecomp.sdc.vendorsoftwareproduct.VspManagerFactory;
import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
import org.openecomp.sdc.vendorsoftwareproduct.errors.ComponentDependencyModelErrorBuilder;
import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentData;
import org.openecomp.sdc.versioning.dao.types.Version;
import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import static org.mockito.Mockito.doReturn;

public class ComponentDependencyModelTest {

  @Spy
  @InjectMocks
  private ComponentDependencyModelManagerImpl componentDependencyModelManager;
  @Mock
  private VendorSoftwareProductManager vendorSoftwareProductManager;
  @Mock
  private VendorSoftwareProductDao vendorSoftwareProductDao;
  @Mock
  private ComponentDao componentDao;
  @Mock
  private ComponentManager componentManager;

  private static String vsp1Id;
  private static String sourceComp1Id;
  private static String sourceComp2Id;
  private static String sourceComp3Id;
  private static String sourceComp4Id;
  private static final String USER1 = "TestUser1";
  private static final String USER2 = "TestUser2";
  private static final Version VERSION01 = new Version(0, 1);
  private static String modelId = "model1";


  @BeforeClass
  private void init() {
    MockitoAnnotations.initMocks(this);
  }

  public static VspDetails createVspDetails(String id, Version version, String name, String desc,
                                            String vendorName, String vlm, String icon,
                                            String category, String subCategory,
                                            String licenseAgreement, List<String> featureGroups
  ) {
    VspDetails vspDetails = new VspDetails(id, version);
    vspDetails.setName(name);
    vspDetails.setDescription(desc);
    vspDetails.setIcon(icon);
    vspDetails.setCategory(category);
    vspDetails.setSubCategory(subCategory);
    vspDetails.setVendorName(vendorName);
    vspDetails.setVendorId(vlm);
    vspDetails.setVlmVersion(new Version(1, 0));
    vspDetails.setLicenseAgreement(licenseAgreement);
    vspDetails.setFeatureGroups(featureGroups);
    return vspDetails;
  }

  @Test
  public void testCreateNegative_NoSourceId() {
    List<ComponentDependencyModelEntity> entities = new ArrayList<ComponentDependencyModelEntity>();
    entities.add(createModelEntity(null, sourceComp2Id));
    testCreate_negative(entities, vsp1Id, VERSION01, USER1,
        ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().id(),
        ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().message());

    entities.removeAll(entities);
    entities.add(createModelEntity("", sourceComp2Id));
    testCreate_negative(entities, vsp1Id, VERSION01, USER1,
        ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().id(),
        ComponentDependencyModelErrorBuilder.getNoSourceComponentErrorBuilder().message());
  }

  @Test
  public void testCreateNegative_SameSourceTarget() {
    List<ComponentDependencyModelEntity> entities = new ArrayList<ComponentDependencyModelEntity>();
    entities.add(createModelEntity("sourceComp1Id", "sourceComp1Id"));
    testCreate_negative(entities, vsp1Id, VERSION01, USER1,
        ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder().id(),
        ComponentDependencyModelErrorBuilder.getSourceTargetComponentEqualErrorBuilder().message());
  }

  @Test
  public void testCreate() {
    List<ComponentDependencyModelEntity> entities = new ArrayList<ComponentDependencyModelEntity>();
    entities.add(createModelEntity("sourceComp1Id", "sourceComp2Id"));
    entities.add(createModelEntity("sourceComp3Id", "sourceComp4Id"));

    componentDependencyModelManager.createComponentDependencyModel(entities, vsp1Id, VERSION01,
        USER1);
    Mockito.verify(vendorSoftwareProductDao, Mockito.times(1)).createComponentDependencyModel
        (entities, vsp1Id,
        VERSION01);
  }

  private ComponentDependencyModelEntity createModelEntity(String sourceId, String targetId) {
    ComponentDependencyModelEntity entity =
        new ComponentDependencyModelEntity(vsp1Id, VERSION01, modelId);
    entity.setSourceComponentId(sourceId);
    entity.setTargetComponentId(targetId);
    entity.setRelation("dependsOn");
    return entity;
  }

  private Collection<ComponentDependencyModelEntity> getDependencyModel(String vspId,
                                                                        Version version,
                                                                        String user) {
    return componentDependencyModelManager.list(vspId, version, user);
  }

  private void testCreate_negative(List<ComponentDependencyModelEntity> entities, String vspId,
                                   Version version, String user,
                                   String expectedErrorCode, String expectedErrorMsg) {
    try {
      componentDependencyModelManager.createComponentDependencyModel(entities, vspId, version,
        user);
      Assert.fail();
    } catch (CoreException exception) {
      Assert.assertEquals(exception.code().id(), expectedErrorCode);
      Assert.assertEquals(exception.getMessage(), expectedErrorMsg);
    }
  }
}