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);
- }
- });
- }
-
}