Package com.codeheadsystems.test.model
Class BaseJacksonTest<T>
- java.lang.Object
-
- com.codeheadsystems.test.model.BaseJacksonTest<T>
-
- Type Parameters:
T- the type parameter
@ExtendWith(org.mockito.junit.jupiter.MockitoExtension.class) public abstract class BaseJacksonTest<T> extends java.lang.ObjectExtend your test with this class and provide the immutable class as a type.
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.util.Set<java.lang.String>methodsToIgnoreThe Methods to ignore.protected com.fasterxml.jackson.databind.ObjectMapperobjectMapperThe Object mapper.protected java.lang.StringsimpleNameThe Simple name.
-
Constructor Summary
Constructors Constructor Description BaseJacksonTest()Base constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidbaseJacksonTestSetup()Base jackson test setup.static voidfindObjectMethods()Find object methods.protected abstract java.lang.Class<T>getBaseClass()Define the model interface/class that we are testing.protected abstract TgetInstance()Return a standard instance of the class that should go back and forth to json.protected java.util.Optional<java.lang.Class<?>>getPolymorphicBaseClass()Override this if you class has a base class.protected com.fasterxml.jackson.databind.ObjectMapperobjectMapper()Override this if you have a custom object mapper to use.voidtestCollectionMethods()Test verifies expected methods that are lists,sets,etc will not fail the JSON conversion if they are missing.voidtestMapMethods()Test verifies expected methods that are maps will not fail the JSON conversion if they are missing.voidtestNotNullMethods()Test verifies expected methods that are required by the model will fail the JSON conversion if they are missing.voidtestNullableMethods()Test verifies expected methods that are not required by the model will not fail the JSON conversion if they are missing.voidtestOptionalMethods()Test verifies expected methods that are optional by the model will not fail the JSON conversion if they are missing.voidtestPolymorphicBaseClass()Test polymorphic base class.voidtestRoundTrip()Test verifies that we can write json from the model, and convert that json back to the object.voidtestRoundTripWithExtraCharacters()Test verifies that we can write json from the model, and convert that json back to the object, even if the json has extra fields added.
-
-
-
Method Detail
-
findObjectMethods
@BeforeAll public static void findObjectMethods()
Find object methods.
-
getBaseClass
protected abstract java.lang.Class<T> getBaseClass()
Define the model interface/class that we are testing. We use this query for properties we want.- Returns:
- Class that we are testing.
-
getInstance
protected abstract T getInstance()
Return a standard instance of the class that should go back and forth to json. Note, we will use the equals method of this class to validate.- Returns:
- an instance of the class.
-
getPolymorphicBaseClass
protected java.util.Optional<java.lang.Class<?>> getPolymorphicBaseClass()
Override this if you class has a base class. Used to test polymorphic behavior is setup correctly with Jackson.- Returns:
- optional of base class.
-
objectMapper
protected com.fasterxml.jackson.databind.ObjectMapper objectMapper()
Override this if you have a custom object mapper to use. This will be retrieved once per test.- Returns:
- object mapper.
-
baseJacksonTestSetup
@BeforeEach public void baseJacksonTestSetup()
Base jackson test setup.
-
testRoundTrip
@Test public void testRoundTrip() throws com.fasterxml.jackson.core.JsonProcessingExceptionTest verifies that we can write json from the model, and convert that json back to the object.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.
-
testRoundTripWithExtraCharacters
@Test public void testRoundTripWithExtraCharacters() throws com.fasterxml.jackson.core.JsonProcessingExceptionTest verifies that we can write json from the model, and convert that json back to the object, even if the json has extra fields added.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.
-
testNotNullMethods
@Test public void testNotNullMethods() throws com.fasterxml.jackson.core.JsonProcessingExceptionTest verifies expected methods that are required by the model will fail the JSON conversion if they are missing.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.
-
testNullableMethods
@Test public void testNullableMethods() throws com.fasterxml.jackson.core.JsonProcessingException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessExceptionTest verifies expected methods that are not required by the model will not fail the JSON conversion if they are missing.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.java.lang.reflect.InvocationTargetException- the invocation target exceptionjava.lang.IllegalAccessException- the illegal access exception
-
testCollectionMethods
@Test public void testCollectionMethods() throws com.fasterxml.jackson.core.JsonProcessingException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessExceptionTest verifies expected methods that are lists,sets,etc will not fail the JSON conversion if they are missing. Note, this does not handle min quantites.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.java.lang.reflect.InvocationTargetException- the invocation target exceptionjava.lang.IllegalAccessException- the illegal access exception
-
testMapMethods
@Test public void testMapMethods() throws com.fasterxml.jackson.core.JsonProcessingException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessExceptionTest verifies expected methods that are maps will not fail the JSON conversion if they are missing.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.java.lang.reflect.InvocationTargetException- the invocation target exceptionjava.lang.IllegalAccessException- the illegal access exception
-
testOptionalMethods
@Test public void testOptionalMethods() throws com.fasterxml.jackson.core.JsonProcessingException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessExceptionTest verifies expected methods that are optional by the model will not fail the JSON conversion if they are missing.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- if object mapper fails.java.lang.reflect.InvocationTargetException- the invocation target exceptionjava.lang.IllegalAccessException- the illegal access exception
-
testPolymorphicBaseClass
@Test public void testPolymorphicBaseClass() throws com.fasterxml.jackson.core.JsonProcessingExceptionTest polymorphic base class.- Throws:
com.fasterxml.jackson.core.JsonProcessingException- the json processing exception
-
-