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 Object
Extend your test with this class and provide the immutable class as a type.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static Set<String>
    The Methods to ignore.
    protected com.fasterxml.jackson.databind.ObjectMapper
    The Object mapper.
    protected String
    The Simple name.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Base constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Base jackson test setup.
    static void
    Find object methods.
    protected abstract Class<T>
    Define the model interface/class that we are testing.
    protected abstract T
    Return a standard instance of the class that should go back and forth to json.
    protected Optional<Class<?>>
    Override this if you class has a base class.
    protected com.fasterxml.jackson.databind.ObjectMapper
    Override this if you have a custom object mapper to use.
    void
    Test verifies expected methods that are lists,sets,etc will not fail the JSON conversion if they are missing.
    void
    Test verifies expected methods that are maps will not fail the JSON conversion if they are missing.
    void
    Test verifies expected methods that are required by the model will fail the JSON conversion if they are missing.
    void
    Test verifies expected methods that are not required by the model will not fail the JSON conversion if they are missing.
    void
    Test verifies expected methods that are optional by the model will not fail the JSON conversion if they are missing.
    void
    Test polymorphic base class.
    void
    Test verifies that we can write json from the model, and convert that json back to the object.
    void
    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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • methodsToIgnore

      protected static Set<String> methodsToIgnore
      The Methods to ignore.
    • objectMapper

      protected com.fasterxml.jackson.databind.ObjectMapper objectMapper
      The Object mapper.
    • simpleName

      protected String simpleName
      The Simple name.
  • Constructor Details

    • BaseJacksonTest

      public BaseJacksonTest()
      Base constructor.
  • Method Details

    • findObjectMethods

      @BeforeAll public static void findObjectMethods()
      Find object methods.
    • getBaseClass

      protected abstract 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 Optional<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.JsonProcessingException
      Test 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.JsonProcessingException
      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.
      Throws:
      com.fasterxml.jackson.core.JsonProcessingException - if object mapper fails.
    • testNotNullMethods

      @Test public void testNotNullMethods() throws com.fasterxml.jackson.core.JsonProcessingException
      Test 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, InvocationTargetException, IllegalAccessException
      Test 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.
      InvocationTargetException - the invocation target exception
      IllegalAccessException - the illegal access exception
    • testCollectionMethods

      @Test public void testCollectionMethods() throws com.fasterxml.jackson.core.JsonProcessingException, InvocationTargetException, IllegalAccessException
      Test 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.
      InvocationTargetException - the invocation target exception
      IllegalAccessException - the illegal access exception
    • testMapMethods

      @Test public void testMapMethods() throws com.fasterxml.jackson.core.JsonProcessingException, InvocationTargetException, IllegalAccessException
      Test 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.
      InvocationTargetException - the invocation target exception
      IllegalAccessException - the illegal access exception
    • testOptionalMethods

      @Test public void testOptionalMethods() throws com.fasterxml.jackson.core.JsonProcessingException, InvocationTargetException, IllegalAccessException
      Test 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.
      InvocationTargetException - the invocation target exception
      IllegalAccessException - the illegal access exception
    • testPolymorphicBaseClass

      @Test public void testPolymorphicBaseClass() throws com.fasterxml.jackson.core.JsonProcessingException
      Test polymorphic base class.
      Throws:
      com.fasterxml.jackson.core.JsonProcessingException - the json processing exception