aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/AnnotationTypeOperationsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/AnnotationTypeOperationsTest.java')
-rw-r--r--catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/AnnotationTypeOperationsTest.java197
1 files changed, 197 insertions, 0 deletions
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/AnnotationTypeOperationsTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/AnnotationTypeOperationsTest.java
new file mode 100644
index 0000000000..9a3c66689e
--- /dev/null
+++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/AnnotationTypeOperationsTest.java
@@ -0,0 +1,197 @@
+package org.openecomp.sdc.be.model.operations.impl;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
+import org.openecomp.sdc.be.model.AnnotationTypeDefinition;
+import org.openecomp.sdc.be.model.ModelTestBase;
+import org.openecomp.sdc.be.model.PropertyDefinition;
+import org.openecomp.sdc.be.model.operations.StorageException;
+import org.openecomp.sdc.be.utils.TypeUtils;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import javax.annotation.Resource;
+
+import static java.util.Arrays.asList;
+import static org.assertj.core.api.Assertions.assertThat;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration("classpath:application-context-test.xml")
+public class AnnotationTypeOperationsTest extends ModelTestBase {
+
+ static final String TYPE = "org.openecomp.annotations.source";
+ static final String NEW_TYPE = "org.openecomp.annotations.Source";
+ static final String DESCRIPTION = "description";
+ static final String NEW_DESCRIPTION = "new description";
+
+ @Resource
+ private TitanGenericDao titanGenericDao;
+
+ @Resource
+ private CommonTypeOperations commonTypeOperations;
+
+ @Resource
+ private AnnotationTypeOperations annotationTypeOperations;
+
+ private PropertyDefinition prop1, prop2;
+ private AnnotationTypeDefinition initialAnnotationDefinition;
+
+ @BeforeClass
+ public static void setupBeforeClass() {
+ ModelTestBase.init();
+ }
+
+ @Before
+ public void initTestData() {
+ removeGraphVertices(titanGenericDao.getGraph());
+ prop1 = createSimpleProperty("val1", "prop1", "string");
+ }
+
+ @After
+ public void tearDown() {
+ titanGenericDao.rollback();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testAddType() {
+ prepareInitialType();
+ AnnotationTypeDefinition result = annotationTypeOperations.addType(initialAnnotationDefinition);
+ assertThat(result.getUniqueId()).isNotEmpty();
+ assertThat(result)
+ .isEqualToComparingOnlyGivenFields(initialAnnotationDefinition, "description", "type");
+ assertThat(result.getProperties())
+ .usingElementComparatorOnFields("defaultValue", "name", "type")
+ .containsExactlyInAnyOrder(prop1);
+ assertThat(result.isHighestVersion()).isTrue();
+ }
+
+ @Test
+ public void testGetLatestType_TypeDoesntExist_shouldReturnNull() {
+ AnnotationTypeDefinition latestType = annotationTypeOperations.getLatestType(TYPE);
+ assertThat(latestType).isNull();
+ }
+
+ @Test
+ public void testGetLatestType_TypeExists_shouldReturnIt() {
+ addAnnotationType();
+ AnnotationTypeDefinition latestType = annotationTypeOperations.getLatestType(TYPE);
+ assertThat(latestType.getType()).isEqualTo(TYPE);
+ }
+
+ public void addAnnotationType() {
+ prepareInitialType();
+ annotationTypeOperations.addType(initialAnnotationDefinition);
+ titanGenericDao.commit();
+ }
+
+ @Test
+ public void compareTypes_same_shouldReturnTrue() {
+ AnnotationTypeDefinition type1 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ AnnotationTypeDefinition type2 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ assertThat(annotationTypeOperations.isSameType(type1, type2)).isTrue();
+ }
+
+ @Test
+ public void compareTypes_sameExceptVersions_shouldReturnTrue() {
+ AnnotationTypeDefinition type1 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ AnnotationTypeDefinition type2 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ type1.setVersion("1");
+ type2.setVersion("2");
+ assertThat(annotationTypeOperations.isSameType(type1, type2)).isTrue();
+ }
+
+ @Test
+ public void compareTypes_differentType_shouldReturnFalse() {
+ AnnotationTypeDefinition type1 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ AnnotationTypeDefinition type2 = buildAnnotationDefinition(DESCRIPTION, NEW_TYPE, prop1);
+ assertThat(annotationTypeOperations.isSameType(type1, type2)).isFalse();
+ }
+
+ @Test
+ public void compareTypes_differentDescription_shouldReturnFalse() {
+ AnnotationTypeDefinition type1 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ AnnotationTypeDefinition type2 = buildAnnotationDefinition(NEW_DESCRIPTION, TYPE, prop1);
+ assertThat(annotationTypeOperations.isSameType(type1, type2)).isFalse();
+ }
+
+ @Test
+ public void compareTypes_differentProperty_shouldReturnFalse() {
+ AnnotationTypeDefinition type1 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop1);
+ prop2 = createSimpleProperty("val2", "prop2", "string");
+ AnnotationTypeDefinition type2 = buildAnnotationDefinition(DESCRIPTION, TYPE, prop2);
+ assertThat(annotationTypeOperations.isSameType(type1, type2)).isFalse();
+ }
+
+ @Test
+ public void testUpdateType_propertyAdded_shouldSucceed() {
+ addAnnotationType();
+ prop2 = createSimpleProperty("val2", "prop2", "string");
+ AnnotationTypeDefinition advancedDefinition = buildAnnotationDefinition(NEW_DESCRIPTION, TYPE, prop1, prop2);
+ AnnotationTypeDefinition updatedType = annotationTypeOperations.updateType(initialAnnotationDefinition, advancedDefinition);
+ assertThat(updatedType.getDescription()).isEqualTo(NEW_DESCRIPTION);
+ assertThat(updatedType.getProperties())
+ .usingElementComparatorOnFields("defaultValue", "name", "type")
+ .containsExactlyInAnyOrder(prop1, prop2);
+ }
+
+ @Test
+ public void testUpdateType_propertyDefaultValueModification_shouldSucceed() {
+ addAnnotationType();
+ prop2 = createSimpleProperty("val3", "prop1", "string");
+ AnnotationTypeDefinition advancedDefinition = buildAnnotationDefinition(DESCRIPTION, TYPE, prop2);
+ AnnotationTypeDefinition updatedType = annotationTypeOperations.updateType(initialAnnotationDefinition, advancedDefinition);
+ assertThat(updatedType.getProperties())
+ .usingElementComparatorOnFields("defaultValue", "name", "type")
+ .containsExactlyInAnyOrder(prop2);
+ }
+
+ @Test
+ public void testUpdateType_propertyDescriptionModification_shouldSucceed() {
+ addAnnotationType();
+ prop2 = createSimpleProperty("val1", "prop1", "string");
+ prop2.setDescription("bla");
+ AnnotationTypeDefinition advancedDefinition = buildAnnotationDefinition(DESCRIPTION, TYPE, prop2);
+ AnnotationTypeDefinition updatedType = annotationTypeOperations.updateType(initialAnnotationDefinition, advancedDefinition);
+ assertThat(updatedType.getProperties())
+ .usingElementComparatorOnFields("defaultValue", "name", "type", "description")
+ .containsExactlyInAnyOrder(prop2);
+ }
+
+ @Test(expected = StorageException.class)
+ public void testUpdateType_propertyTypeModification_shouldFail() {
+ addAnnotationType();
+ prop2 = createSimpleProperty("val1", "prop1", "int");
+ AnnotationTypeDefinition advancedDefinition = buildAnnotationDefinition(DESCRIPTION, TYPE, prop2);
+ annotationTypeOperations.updateType(initialAnnotationDefinition, advancedDefinition);
+ }
+
+ @Test(expected = StorageException.class)
+ public void testUpdateType_propertyRemoved_shouldFail() {
+ addAnnotationType();
+ prop2 = createSimpleProperty("val1", "prop2", "int");
+ AnnotationTypeDefinition advancedDefinition = buildAnnotationDefinition(DESCRIPTION, TYPE, prop2);
+ annotationTypeOperations.updateType(initialAnnotationDefinition, advancedDefinition);
+ }
+
+ private void prepareInitialType() {
+ initialAnnotationDefinition = buildAnnotationDefinition(DESCRIPTION,
+ TYPE,
+ prop1);
+ initialAnnotationDefinition.setVersion(TypeUtils.FIRST_CERTIFIED_VERSION_VERSION);
+ }
+
+ private AnnotationTypeDefinition buildAnnotationDefinition(String description, String type, PropertyDefinition ... properties) {
+ AnnotationTypeDefinition annotationTypeDefinition = new AnnotationTypeDefinition();
+ annotationTypeDefinition.setDescription(description);
+ annotationTypeDefinition.setType(type);
+ annotationTypeDefinition.setHighestVersion(true);
+ annotationTypeDefinition.setProperties(asList(properties));
+ return annotationTypeDefinition;
+ }
+
+} \ No newline at end of file