1 package org.openecomp.sdc.be.model.tosca.converters;
3 import static org.junit.Assert.*;
5 import com.google.gson.JsonElement;
6 import com.google.gson.JsonObject;
7 import org.junit.Before;
9 import org.openecomp.sdc.be.model.DataTypeDefinition;
10 import org.openecomp.sdc.be.model.PropertyDefinition;
12 import javax.json.Json;
13 import java.util.Arrays;
14 import java.util.Collections;
15 import java.util.HashMap;
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertTrue;
21 import org.junit.Assert;
23 public class DataTypePropertyConverterTest {
25 private static final String EMPTY_JSON_STR = "{}";
26 public static final String PROPERTY2_DEFAULT = "{\"prop1\":\"def1\",\"prop3\":\"def3\"}";
27 private DataTypePropertyConverter testInstance = DataTypePropertyConverter.getInstance();
28 private Map<String, DataTypeDefinition> dataTypes;
29 private DataTypeDefinition noDefaultValue, dataType1, dataType2, dataType3;
30 private PropertyDefinition prop1, prop2, prop3, noDefaultProp;
33 public void setUp() throws Exception {
34 dataTypes = new HashMap<>();
36 prop1 = new PropertyDefinition();
37 prop1.setDefaultValue("def1");
38 prop1.setName("prop1");
40 prop2 = new PropertyDefinition();
41 prop2.setType("dataType1");
42 prop2.setName("prop2");
44 prop3 = new PropertyDefinition();
45 prop3.setDefaultValue("def3");
46 prop3.setName("prop3");
48 noDefaultProp = new PropertyDefinition();
49 noDefaultProp.setName("noDefaultProp");
51 noDefaultValue = new DataTypeDefinition();
52 noDefaultValue.setProperties(Collections.singletonList(noDefaultProp));
54 dataType1 = new DataTypeDefinition();
55 dataType1.setProperties(Arrays.asList(prop1, prop3));
57 dataType2 = new DataTypeDefinition();
58 dataType2.setDerivedFrom(dataType1);
60 dataType3 = new DataTypeDefinition();
61 dataType3.setProperties(Collections.singletonList(prop2));
62 dataType3.setDerivedFrom(noDefaultValue);
64 dataTypes.put("noDefault", noDefaultValue);
65 dataTypes.put("dataType1", dataType1);
66 dataTypes.put("dataType2", dataType2);
67 dataTypes.put("dataType3", dataType3);
71 public void testGetPropertyDefaultValuesRec_dataTypeNotExist() throws Exception {
72 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("someType", dataTypes);
73 assertEquals(EMPTY_JSON_STR, defaultValue);
77 public void testGetPropertyDefaultValuesRec_NoDefaultValue() throws Exception {
78 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("noDefault", dataTypes);
79 assertEquals(EMPTY_JSON_STR, defaultValue);
83 public void testGetPropertyDefaultValuesRec() throws Exception {
84 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("dataType1", dataTypes);
85 assertEquals(PROPERTY2_DEFAULT, defaultValue);
89 public void testGetPropertyDefaultValuesRec_defaultFromDerivedDataType_derivedDataTypeHasNoDefaults()
91 dataType2.setDerivedFrom(noDefaultValue);
92 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("dataType2", dataTypes);
93 assertEquals(EMPTY_JSON_STR, defaultValue);
97 public void testGetPropertyDefaultValuesRec_defaultFromDerivedDataType() throws Exception {
98 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("dataType2", dataTypes);
99 assertEquals(PROPERTY2_DEFAULT, defaultValue);
103 public void testGetPropertyDefaultValuesRec_defaultFromDataTypesOfProperties_dataTypeOfPropertyHasNoDefault()
105 dataType3.getProperties().get(0).setType(noDefaultValue.getName());
106 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("dataType3", dataTypes);
107 assertEquals(EMPTY_JSON_STR, defaultValue);
111 public void testGetPropertyDefaultValuesRec_defaultFromDataTypesOfProperties() throws Exception {
112 String defaultValue = testInstance.getDataTypePropertiesDefaultValuesRec("dataType3", dataTypes);
113 assertEquals("{\"prop2\":" + PROPERTY2_DEFAULT + "}", defaultValue);// data
135 public void testMergeDefaultValues_allDefaultValuesAreOverridden() throws Exception {
136 JsonObject value = new JsonObject();
137 value.addProperty(noDefaultProp.getName(), "override1");
139 JsonObject prop1Val = new JsonObject();
140 prop1Val.addProperty(prop1.getName(), "prop1Override");
142 JsonObject prop3Val = new JsonObject();
143 prop3Val.addProperty(prop3.getName(), "prop3Override");
145 JsonObject prop2Value = new JsonObject();
146 prop2Value.add(prop3.getName(), prop3Val);
147 prop2Value.add(prop1.getName(), prop1Val);
149 value.add(prop2.getName(), prop2Value);
151 String valBeforeMerge = value.toString();
153 testInstance.mergeDataTypeDefaultValuesWithPropertyValue(value, "dataType3", dataTypes);
154 assertEquals(valBeforeMerge, value.toString());
158 public void testMergeDefaultValues() throws Exception {
159 JsonObject value = new JsonObject();
160 value.addProperty(noDefaultProp.getName(), "override1");
162 JsonObject prop1Val = new JsonObject();
163 prop1Val.addProperty(prop1.getName(), "prop1Override");
165 value.add(prop2.getName(), prop1Val);
167 testInstance.mergeDataTypeDefaultValuesWithPropertyValue(value, "dataType3", dataTypes);
169 assertEquals("{\"noDefaultProp\":\"override1\",\"prop2\":{\"prop1\":\"prop1Override\",\"prop3\":\"def3\"}}",
170 value.toString());// expect to merge prop 3 default as it was
175 public void testMergeDefaultValues_mergeAll() throws Exception {
176 JsonObject value = new JsonObject();
177 testInstance.mergeDataTypeDefaultValuesWithPropertyValue(value, "dataType3", dataTypes);
179 assertEquals("{\"prop2\":" + PROPERTY2_DEFAULT + "}", value.toString());// expect
193 public void testMergeDefaultValues_doNotAddDefaultsForGetInputValues() throws Exception {
195 JsonObject getInputValue = new JsonObject();
196 getInputValue.addProperty("get_input", "in1");
198 JsonObject value = new JsonObject();
199 value.add(prop2.getName(), getInputValue);
201 testInstance.mergeDataTypeDefaultValuesWithPropertyValue(value, "dataType3", dataTypes);
203 assertEquals("{\"prop2\":{\"get_input\":\"in1\"}}", value.toString());
207 public void testMergeDefaultValues_doNotAddDefaultsForGetInputInnerValues() throws Exception {
208 JsonObject getInputValue = new JsonObject();
209 getInputValue.addProperty("get_input", "in1");
211 JsonObject prop1Val = new JsonObject();
212 prop1Val.add(prop1.getName(), getInputValue);
214 JsonObject value = new JsonObject();
215 value.add(prop2.getName(), prop1Val);
217 testInstance.mergeDataTypeDefaultValuesWithPropertyValue(value, "dataType3", dataTypes);
219 assertEquals("{\"prop2\":{\"prop1\":{\"get_input\":\"in1\"},\"prop3\":\"def3\"}}", value.toString());
223 private DataTypePropertyConverter createTestSubject() {
224 return DataTypePropertyConverter.getInstance();
229 public void testGetInstance() throws Exception {
230 DataTypePropertyConverter result;
233 result = DataTypePropertyConverter.getInstance();