This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 1f8f6ea352 ISIS-3127: [RO] convert JsonValueEncoderTest_asObject 
mocked tests to integration tests
1f8f6ea352 is described below

commit 1f8f6ea35272a85ec79cc94c066500d88aad3bbe
Author: andi-huber <[email protected]>
AuthorDate: Fri Aug 19 14:07:12 2022 +0200

    ISIS-3127: [RO] convert JsonValueEncoderTest_asObject mocked tests to
    integration tests
---
 .../isis/testdomain/rest/JsonValueEncoderTest.java |  19 ++-
 .../domainobjects/JsonValueConverter.java          |  16 +-
 .../domainobjects/JsonValueConverters.java         |  66 +++++---
 .../JsonValueEncoderTest_asObject.java             | 186 ---------------------
 4 files changed, 76 insertions(+), 211 deletions(-)

diff --git 
a/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/JsonValueEncoderTest.java
 
b/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/JsonValueEncoderTest.java
index 318437a30d..0970b002c2 100644
--- 
a/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/JsonValueEncoderTest.java
+++ 
b/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/JsonValueEncoderTest.java
@@ -21,6 +21,7 @@ package org.apache.isis.testdomain.rest;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.time.Instant;
+import java.util.function.Consumer;
 
 import javax.inject.Inject;
 
@@ -31,6 +32,7 @@ import org.springframework.test.context.TestPropertySource;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
 import org.apache.isis.commons.internal.base._Temporals;
+import org.apache.isis.commons.internal.functions._Functions;
 import org.apache.isis.core.config.presets.IsisPresets;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.testdomain.conf.Configuration_headless;
@@ -42,6 +44,7 @@ import 
org.apache.isis.viewer.restfulobjects.rendering.domainobjects.JsonValueEn
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import lombok.val;
 
@@ -365,19 +368,31 @@ class JsonValueEncoderTest {
     @Test
     void whenBlob() {
         val value = Blob.of("a Blob", CommonMimeType.BIN, new byte[] {1, 2, 
3});
-        val representation = representationFor(value);
+        val representation = representationFor(value, 
_Functions.noopConsumer());
 
         System.err.printf("representation %s%n", representation);
         //TODO convert repr. to map like
     }
 
     private JsonRepresentation representationFor(final Object value) {
-        return representationFor(value, defaultContext());
+        return representationFor(value, defaultContext(), 
osObj->assertEquals(value, osObj));
+    }
+
+    private JsonRepresentation representationFor(final Object value, final 
Consumer<Object> valueAsObjectVerifier) {
+        return representationFor(value, defaultContext(), 
valueAsObjectVerifier);
     }
 
     private JsonRepresentation representationFor(final Object value, final 
Context context) {
+        return representationFor(value, context, osObj->assertEquals(value, 
osObj));
+    }
+
+    private JsonRepresentation representationFor(
+            final Object value, final Context context, final Consumer<Object> 
valueAsObjectVerifier) {
         val valueAdapter = mmc.getObjectManager().adapt(value);
         val jsonValueEncoder = 
JsonValueEncoder.forTesting(mmc.getSpecificationLoader());
+
+        valueAsObjectVerifier.accept(jsonValueEncoder.asObject(valueAdapter, 
context));
+
         val representation = JsonRepresentation.newMap();
         jsonValueEncoder.appendValueAndFormat(valueAdapter, representation, 
context);
         return representation;
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
index c537168e4f..e8f2a3d61b 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
@@ -33,6 +33,7 @@ import 
org.apache.isis.core.metamodel.spec.feature.HasObjectFeature;
 import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.core.metamodel.util.Facets;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import 
org.apache.isis.viewer.restfulobjects.rendering.domainobjects.JsonValueConverters.DefaultFormat;
 
 import lombok.Getter;
 import lombok.NonNull;
@@ -112,12 +113,19 @@ public interface JsonValueConverter {
 
         @Getter private final Class<?> valueClass;
 
-        public Abstract(final String format, final String extendedFormat, 
final Class<?> valueClass) {
-            this.format = format;
-            this.extendedFormat = extendedFormat;
-            this.valueClass = valueClass;
+
+        public Abstract(final DefaultFormat format) {
+            this.format = format.format;
+            this.extendedFormat = format.extendedFormat;
+            this.valueClass = format.valueClass;
         }
 
+//        public Abstract(final String format, final String extendedFormat, 
final Class<?> valueClass) {
+//            this.format = format;
+//            this.extendedFormat = extendedFormat;
+//            this.valueClass = valueClass;
+//        }
+
         @Override
         public Object appendValueAndFormat(
                 final ManagedObject objectAdapter,
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
index d4de1b064c..3def057737 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
@@ -35,6 +35,7 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 
+import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
@@ -42,13 +43,40 @@ import lombok.val;
  * @deprecated should be covered 100% per {@link ValueSemanticsProvider}
  */
 @Deprecated
-final class JsonValueConverters {
+public final class JsonValueConverters {
+
+    @RequiredArgsConstructor
+    public static enum DefaultFormat {
+        STRING(String.class, null, "string"),
+        BOOLEAN(Boolean.class, null, "boolean"),
+        BYTE(Byte.class, "int", "byte"),
+        SHORT(Short.class, "int", "short"),
+        INT(Integer.class, "int", "int"),
+        LONG(Long.class, "int", "long"),
+        FLOAT(Float.class, "decimal", "float"),
+        DOUBLE(Double.class, "decimal", "double"),
+        CHAR(Character.class, null, "char"),
+        BIGINTEGER(BigInteger.class, "big-integer(18)", "javamathbiginteger"),
+        BIGDECIMAL(BigDecimal.class, "big-decimal", "javamathbigdecimal"),
+        JODALOCALDATE(LocalDate.class, "date", "jodalocaldate"),
+        JODALOCALDATETIME(LocalDateTime.class, "date-time", 
"jodalocaldatetime"),
+        JODADATETIME(DateTime.class, "date-time", "jodadatetime"),
+        JAVAUTILDATE(java.util.Date.class, "date-time", "javautildate"),
+        JAVASQLDATE(java.sql.Date.class, "date", "javasqldate"),
+        JAVASQLTIME(java.sql.Time.class, "time", "javasqltime"),
+        JAVASQLTIMESTAMP(java.sql.Timestamp.class, "utc-millisec", 
"javasqltimestamp"),
+
+        ;
+        final Class<?> valueClass;
+        final String format;
+        final String extendedFormat;
+    }
 
     public List<JsonValueConverter> asList() {
 
         val converters = _Lists.<JsonValueConverter>newArrayList();
 
-        converters.add(new JsonValueConverter.Abstract(null, "string", 
String.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.STRING){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isString()) {
@@ -70,7 +98,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract(null, "boolean", 
Boolean.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.BOOLEAN){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isBoolean()) {
@@ -92,7 +120,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("int", "byte", 
Byte.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.BYTE){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isNumber()) {
@@ -123,7 +151,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("int", "short", 
Short.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.SHORT){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isNumber()) {
@@ -154,7 +182,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("int", "int", 
Integer.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.INT){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isInt()) {
@@ -185,7 +213,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("int", "long", 
Long.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.LONG){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isLong()) {
@@ -217,7 +245,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("decimal", "float", 
Float.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.FLOAT){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isDecimal()) {
@@ -252,7 +280,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("decimal", "double", 
Double.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.DOUBLE){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isDecimal()) {
@@ -290,7 +318,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract(null, "char", 
Character.class){
+        converters.add(new JsonValueConverter.Abstract(DefaultFormat.CHAR){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isString()) {
@@ -324,7 +352,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("big-integer(18)", 
"javamathbiginteger", BigInteger.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.BIGINTEGER){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isString()) {
@@ -367,7 +395,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("big-decimal", 
"javamathbigdecimal", BigDecimal.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.BIGDECIMAL){
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
                 if (repr.isString()) {
@@ -422,7 +450,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("date", 
"jodalocaldate", LocalDate.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JODALOCALDATE){
 
             // these formatters do NOT use withZoneUTC()
             final List<DateTimeFormatter> formatters = Arrays.asList(
@@ -464,7 +492,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("date-time", 
"jodalocaldatetime", LocalDateTime.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JODALOCALDATETIME){
 
             final List<DateTimeFormatter> formatters = Arrays.asList(
                     ISODateTimeFormat.dateTimeNoMillis().withZoneUTC(),
@@ -506,7 +534,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("date-time", 
"jodadatetime", DateTime.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JODADATETIME){
 
             final List<DateTimeFormatter> formatters = Arrays.asList(
                     ISODateTimeFormat.dateTimeNoMillis().withZoneUTC(),
@@ -548,7 +576,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("date-time", 
"javautildate", java.util.Date.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JAVAUTILDATE){
 
             final List<DateTimeFormatter> formatters = Arrays.asList(
                     ISODateTimeFormat.dateTimeNoMillis().withZoneUTC(),
@@ -591,7 +619,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("date", "javasqldate", 
java.sql.Date.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JAVASQLDATE){
 
             final List<DateTimeFormatter> formatters = Arrays.asList(
                     ISODateTimeFormat.date().withZoneUTC(),
@@ -631,7 +659,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("time", "javasqltime", 
java.sql.Time.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JAVASQLTIME){
 
             final List<DateTimeFormatter> formatters = Arrays.asList(
                     ISODateTimeFormat.hourMinuteSecond().withZoneUTC(),
@@ -672,7 +700,7 @@ final class JsonValueConverters {
             }
         });
 
-        converters.add(new JsonValueConverter.Abstract("utc-millisec", 
"javasqltimestamp", java.sql.Timestamp.class){
+        converters.add(new 
JsonValueConverter.Abstract(DefaultFormat.JAVASQLTIMESTAMP){
 
             @Override
             public Object recoverValueAsPojo(final JsonRepresentation repr, 
final Context context) {
diff --git 
a/viewers/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_asObject.java
 
b/viewers/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_asObject.java
index b6fea13cae..15cb403dce 100644
--- 
a/viewers/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_asObject.java
+++ 
b/viewers/restfulobjects/rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTest_asObject.java
@@ -18,23 +18,13 @@
  */
 package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
-import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -45,7 +35,6 @@ public class JsonValueEncoderTest_asObject {
             
JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
 
     @Mock private ObjectSpecification mockObjectSpec;
-    @Mock private ValueFacet mockValueFacet;
     @Mock private ManagedObject mockObjectAdapter;
     @Mock private SpecificationLoader specLoader;
 
@@ -65,184 +54,9 @@ public class JsonValueEncoderTest_asObject {
 
     }
 
-    @After
-    public void tearDown() throws Exception {
-
-    }
-
     @Test(expected = Exception.class)
     public void whenAdapterIsNull() throws Exception {
         jsonValueEncoder.asObject(null, null);
     }
 
-    @Test
-    public void whenBooleanPrimitive() throws Exception {
-        whenBoolean(boolean.class);
-    }
-
-    @Test
-    public void whenBooleanWrapper() throws Exception {
-        whenBoolean(Boolean.class);
-    }
-
-    private void whenBoolean(final Class<?> cls) {
-        allowingObjectSpecCorrespondingClassIs(cls);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        never(mockValueFacet);
-        context.checking(new Expectations() {
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue(true));
-            }
-        });
-        assertEquals(true, jsonValueEncoder.asObject(mockObjectAdapter, null));
-    }
-
-    @Test
-    public void whenIntegerPrimitive() throws Exception {
-        whenInteger(int.class);
-    }
-
-    @Test
-    public void whenIntegerWrapper() throws Exception {
-        whenInteger(Integer.class);
-    }
-
-    private void whenInteger(final Class<?> cls) {
-        allowingObjectSpecCorrespondingClassIs(cls);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        never(mockValueFacet);
-        context.checking(new Expectations() {
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue(123));
-            }
-        });
-        assertEquals(123, jsonValueEncoder.asObject(mockObjectAdapter, null));
-    }
-
-    @Test
-    public void whenLongPrimitive() throws Exception {
-        whenLong(long.class);
-    }
-
-    @Test
-    public void whenLongWrapper() throws Exception {
-        whenLong(Long.class);
-    }
-
-    private void whenLong(final Class<?> cls) {
-        allowingObjectSpecCorrespondingClassIs(cls);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        never(mockValueFacet);
-        context.checking(new Expectations() {
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue(123456789L));
-            }
-        });
-        assertEquals(123456789L, jsonValueEncoder.asObject(mockObjectAdapter, 
null));
-    }
-
-    @Test
-    public void whenDoublePrimitive() throws Exception {
-        whenDouble(double.class);
-    }
-
-    @Test
-    public void whenDoubleWrapper() throws Exception {
-        whenDouble(Double.class);
-    }
-
-    private void whenDouble(final Class<?> cls) {
-        allowingObjectSpecCorrespondingClassIs(cls);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        never(mockValueFacet);
-        context.checking(new Expectations() {
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue(12345.6789));
-            }
-        });
-        assertEquals(12345.6789, jsonValueEncoder.asObject(mockObjectAdapter, 
null));
-    }
-
-    @Test
-    public void whenBigInteger() throws Exception {
-        allowingObjectSpecCorrespondingClassIs(BigInteger.class);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        never(mockValueFacet);
-        final BigInteger value = new BigInteger("123456789012345");
-        context.checking(new Expectations() {
-
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue(value));
-            }
-        });
-        assertEquals(value, jsonValueEncoder.asObject(mockObjectAdapter, 
null));
-    }
-
-    @Test
-    public void whenBigDecimal() throws Exception {
-        allowingObjectSpecCorrespondingClassIs(BigDecimal.class);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        never(mockValueFacet);
-        final BigDecimal value = new BigDecimal("1234567890.1234567890");
-        context.checking(new Expectations() {
-
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue(value));
-            }
-        });
-        assertEquals(value, jsonValueEncoder.asObject(mockObjectAdapter, 
null));
-    }
-
-    @Test
-    public void whenString() throws Exception {
-        allowingObjectSpecCorrespondingClassIs(String.class);
-        allowingObjectSpecHas(ValueFacet.class, mockValueFacet);
-        context.checking(new Expectations() {
-            {
-                oneOf(mockObjectAdapter).getPojo();
-                will(returnValue("encodedString"));
-            }
-        });
-        final Object actual = jsonValueEncoder.asObject(mockObjectAdapter, 
null);
-        assertSame("encodedString", actual);
-    }
-
-    private void allowingObjectSpecCorrespondingClassIs(final Class<?> result) 
{
-        context.checking(new Expectations() {
-            {
-                allowing(mockObjectSpec).getCorrespondingClass();
-                will(returnValue(result));
-            }
-        });
-        context.checking(new Expectations() {
-            {
-                allowing(mockObjectSpec).getLogicalType();
-                will(returnValue(LogicalType.fqcn(result)));
-            }
-        });
-    }
-
-    private <T extends Facet> void allowingObjectSpecHas(final Class<T> 
facetClass, final T encodableFacet) {
-        context.checking(new Expectations() {
-            {
-                allowing(mockObjectSpec).getFacet(facetClass);
-                will(returnValue(encodableFacet));
-            }
-        });
-    }
-
-    private void never(final ValueFacet vFacet) {
-        context.checking(new Expectations() {
-            {
-                never(vFacet);
-            }
-        });
-    }
-
 }

Reply via email to