Test many POJOs getters/setters
[vid.git] / vid-app-common / src / test / java / org / onap / vid / testUtils / TestUtils.java
index 71f7ee0..0b79452 100644 (file)
@@ -62,6 +62,7 @@ import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.RandomUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.commons.lang3.reflect.MethodUtils;
@@ -87,6 +88,10 @@ import org.mockito.stubbing.OngoingStubbing;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.asdc.AsdcCatalogException;
 import org.onap.vid.asdc.beans.Service;
+import org.onap.vid.model.VidNotions;
+import org.onap.vid.model.VidNotions.InstantiationType;
+import org.onap.vid.model.VidNotions.InstantiationUI;
+import org.onap.vid.model.VidNotions.ModelCategory;
 import org.onap.vid.mso.model.CloudConfiguration;
 import org.springframework.core.env.Environment;
 import org.testng.annotations.DataProvider;
@@ -189,10 +194,10 @@ public class TestUtils {
         return result;
     }
 
-    private static <T> List<String> allStringPropertiesOf(T object) {
-        return getPropertyDescriptorsRecursively(object.getClass()).stream()
-            .filter(descriptor -> descriptor.getPropertyType().isAssignableFrom(String.class))
-            .map(PropertyDescriptor::getDisplayName)
+    private static <T> List<String> allStringFieldsOf(T object) {
+        return FieldUtils.getAllFieldsList(object.getClass()).stream()
+            .filter(field -> field.getType().isAssignableFrom(String.class))
+            .map(Field::getName)
             .distinct()
             .collect(toList());
     }
@@ -231,8 +236,8 @@ public class TestUtils {
      * @param <T>
      * @return The modified object
      */
-    public static <T> T setStringsInStringProperties(T object) {
-        allStringPropertiesOf(object).forEach(it -> {
+    public static <T> T setStringsInStringFields(T object) {
+        allStringFieldsOf(object).forEach(it -> {
             try {
                 FieldUtils.writeField(object, it, it, true);
             } catch (IllegalAccessException e) {
@@ -249,6 +254,18 @@ public class TestUtils {
             ), CloudConfiguration.class);
     }
 
+    public static void registerVidNotionsValueGenerator() {
+        BeanMatchers.registerValueGenerator(() -> new VidNotions(
+            randomEnum(InstantiationUI.class), randomEnum(ModelCategory.class),
+            randomEnum(InstantiationUI.class), randomEnum(InstantiationType.class)
+        ), VidNotions.class);
+    }
+
+    private static <T> T randomEnum(Class<T> enumClass) {
+        T[] values = enumClass.getEnumConstants();
+        return values[RandomUtils.nextInt(0, values.length)];
+    }
+
     public static OngoingStubbing<InputStream> mockGetRawBodyWithStringBody(HttpResponse<String> httpResponse, String body) {
         try {
             return when(httpResponse.getRawBody()).thenReturn(IOUtils.toInputStream(body, StandardCharsets.UTF_8.name()));