JPA concepts for TOSCA
[policy/models.git] / models-tosca / src / test / java / org / onap / policy / models / tosca / simple / concepts / JpaToscaDataTypeTest.java
index efdddcc..7168f48 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.models.tosca.simple.concepts;
 
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.junit.Test;
 import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.base.PfKey;
 import org.onap.policy.models.base.PfReferenceKey;
 import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType;
 
 /**
- * DAO test for ToscaDatatype.
+ * DAO test for JpaToscaDatatype.
  *
  * @author Liam Fallon (liam.fallon@est.tech)
  */
 public class JpaToscaDataTypeTest {
 
+    private static final String VERSION_001 = "0.0.1";
+
     @Test
     public void testDataTypePojo() {
         assertNotNull(new JpaToscaDataType());
         assertNotNull(new JpaToscaDataType(new PfConceptKey()));
         assertNotNull(new JpaToscaDataType(new JpaToscaDataType()));
+        assertNotNull(new JpaToscaDataType(new ToscaDataType()));
 
-        try {
+        assertThatThrownBy(() -> {
             new JpaToscaDataType((PfConceptKey) null);
-            fail("test should throw an exception");
-        } catch (Exception exc) {
-            assertEquals("key is marked @NonNull but is null", exc.getMessage());
-        }
-
-        try {
-            new JpaToscaDataType((JpaToscaDataType) null);
-            fail("test should throw an exception");
-        } catch (Exception exc) {
-            assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
-        }
-
-        PfConceptKey dtKey = new PfConceptKey("tdt", "0.0.1");
+        }).hasMessageMatching("key is marked .*on.*ull but is null");
+
+        assertThatThrownBy(() -> new JpaToscaDataType((JpaToscaDataType) null))
+                .isInstanceOf(NullPointerException.class);
+
+        PfConceptKey dtKey = new PfConceptKey("tdt", VERSION_001);
         JpaToscaDataType tdt = new JpaToscaDataType(dtKey);
 
         List<JpaToscaConstraint> constraints = new ArrayList<>();
@@ -76,7 +73,8 @@ public class JpaToscaDataTypeTest {
         assertEquals(constraints, tdt.getConstraints());
 
         Map<String, JpaToscaProperty> properties = new LinkedHashMap<>();
-        JpaToscaProperty tp = new JpaToscaProperty(new PfReferenceKey(dtKey, "pr"), new PfConceptKey("type", "0.0.1"));
+        JpaToscaProperty tp =
+                new JpaToscaProperty(new PfReferenceKey(dtKey, "pr"), new PfConceptKey("type", VERSION_001));
         properties.put(tp.getKey().getLocalName(), tp);
         tdt.setProperties(properties);
         assertEquals(properties, tdt.getProperties());
@@ -85,33 +83,25 @@ public class JpaToscaDataTypeTest {
         assertEquals(tdt, tdtClone0);
         assertEquals(0, tdt.compareTo(tdtClone0));
 
-        JpaToscaDataType tdtClone1 = new JpaToscaDataType();
-        tdt.copyTo(tdtClone1);
+        JpaToscaDataType tdtClone1 = new JpaToscaDataType(tdt);
         assertEquals(tdt, tdtClone1);
         assertEquals(0, tdt.compareTo(tdtClone1));
 
         assertEquals(-1, tdt.compareTo(null));
         assertEquals(0, tdt.compareTo(tdt));
-        assertFalse(tdt.compareTo(tdt.getKey()) == 0);
+        assertNotEquals(0, tdt.compareTo(tdt.getKey()));
 
-        PfConceptKey otherDtKey = new PfConceptKey("otherDt", "0.0.1");
+        PfConceptKey otherDtKey = new PfConceptKey("otherDt", VERSION_001);
         JpaToscaDataType otherDt = new JpaToscaDataType(otherDtKey);
 
-        assertFalse(tdt.compareTo(otherDt) == 0);
+        assertNotEquals(0, tdt.compareTo(otherDt));
         otherDt.setKey(dtKey);
-        assertFalse(tdt.compareTo(otherDt) == 0);
+        assertNotEquals(0, tdt.compareTo(otherDt));
         otherDt.setConstraints(constraints);
-        assertFalse(tdt.compareTo(otherDt) == 0);
+        assertNotEquals(0, tdt.compareTo(otherDt));
         otherDt.setProperties(properties);
         assertEquals(0, tdt.compareTo(otherDt));
 
-        try {
-            tdt.copyTo(null);
-            fail("test should throw an exception");
-        } catch (Exception exc) {
-            assertEquals("target is marked @NonNull but is null", exc.getMessage());
-        }
-
         assertEquals(3, tdt.getKeys().size());
         assertEquals(1, new JpaToscaDataType().getKeys().size());
 
@@ -132,12 +122,72 @@ public class JpaToscaDataTypeTest {
         tdt.getProperties().remove(null);
         assertTrue(tdt.validate(new PfValidationResult()).isValid());
 
-        try {
+        assertThatThrownBy(() -> {
             tdt.validate(null);
-            fail("test should throw an exception");
-        } catch (Exception exc) {
-            assertEquals("resultIn is marked @NonNull but is null", exc.getMessage());
-        }
+        }).hasMessageMatching("result is marked .*on.*ull but is null");
+
+        ToscaDataType dat = new ToscaDataType();
+        dat.setName("name");
+        dat.setVersion("1.2.3");
+        dat.setConstraints(new ArrayList<>());
+        ToscaConstraint constraint = new ToscaConstraint();
+        constraint.setEqual("EqualTo");
+        dat.getConstraints().add(constraint);
+
+        JpaToscaDataType tdta = new JpaToscaDataType();
+        tdta.fromAuthorative(dat);
+        assertEquals("name", tdta.getKey().getName());
+
+        ToscaDataType datOut = tdta.toAuthorative();
+        assertNotNull(datOut);
+    }
+
+    @Test
+    public void testGetReferencedDataTypes() {
+        JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0", "0.0.1"));
+
+        assertTrue(dt0.getReferencedDataTypes().isEmpty());
+
+        dt0.setProperties(new LinkedHashMap<>());
+        assertTrue(dt0.getReferencedDataTypes().isEmpty());
+
+        JpaToscaProperty prop0 = new JpaToscaProperty(new PfReferenceKey(dt0.getKey(), "prop0"));
+        prop0.setType(new PfConceptKey("string", PfKey.NULL_KEY_VERSION));
+        assertTrue(prop0.validate(new PfValidationResult()).isValid());
+
+        dt0.getProperties().put(prop0.getKey().getLocalName(), prop0);
+        assertTrue(dt0.getReferencedDataTypes().isEmpty());
+
+        JpaToscaProperty prop1 = new JpaToscaProperty(new PfReferenceKey(dt0.getKey(), "prop1"));
+        prop1.setType(new PfConceptKey("the.property.Type0", "0.0.1"));
+        assertTrue(prop1.validate(new PfValidationResult()).isValid());
+
+        dt0.getProperties().put(prop1.getKey().getLocalName(), prop1);
+        assertEquals(1, dt0.getReferencedDataTypes().size());
+
+        JpaToscaProperty prop2 = new JpaToscaProperty(new PfReferenceKey(dt0.getKey(), "prop2"));
+        prop2.setType(new PfConceptKey("the.property.Type0", "0.0.1"));
+        assertTrue(prop2.validate(new PfValidationResult()).isValid());
+
+        dt0.getProperties().put(prop2.getKey().getLocalName(), prop2);
+        assertEquals(1, dt0.getReferencedDataTypes().size());
+
+        JpaToscaProperty prop3 = new JpaToscaProperty(new PfReferenceKey(dt0.getKey(), "prop4"));
+        prop3.setType(new PfConceptKey("the.property.Type1", "0.0.1"));
+        prop3.setEntrySchema(new JpaToscaSchemaDefinition());
+        prop3.getEntrySchema().setType(new PfConceptKey("the.property.Type3", "0.0.1"));
+        assertTrue(prop3.validate(new PfValidationResult()).isValid());
+
+        dt0.getProperties().put(prop3.getKey().getLocalName(), prop3);
+        assertEquals(3, dt0.getReferencedDataTypes().size());
+
+        JpaToscaProperty prop4 = new JpaToscaProperty(new PfReferenceKey(dt0.getKey(), "prop4"));
+        prop4.setType(new PfConceptKey("the.property.Type1", "0.0.1"));
+        prop4.setEntrySchema(new JpaToscaSchemaDefinition());
+        prop4.getEntrySchema().setType(new PfConceptKey("the.property.Type2", "0.0.1"));
+        assertTrue(prop4.validate(new PfValidationResult()).isValid());
 
+        dt0.getProperties().put(prop4.getKey().getLocalName(), prop4);
+        assertEquals(3, dt0.getReferencedDataTypes().size());
     }
 }