diff --git a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/github/GitHub917.kt b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/github/GitHub917.kt new file mode 100644 index 00000000..96e4cf86 --- /dev/null +++ b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/github/GitHub917.kt @@ -0,0 +1,39 @@ +package io.github.projectmapk.jackson.module.kogera.zPorted.test.github + +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.OptBoolean +import com.fasterxml.jackson.databind.exc.InvalidNullException +import io.github.projectmapk.jackson.module.kogera.jacksonObjectMapper +import io.github.projectmapk.jackson.module.kogera.readValue +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows + +class GitHub917 { + data class Failing(val data: T) + + val mapper = jacksonObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL) + + @Test + fun failing() { + val value = Failing(null) + val json = mapper.writeValueAsString(value) + + assertThrows { + val deserializedValue = mapper.readValue>(json) + assertEquals(value ,deserializedValue) + } + } + + data class WorkAround(@JsonProperty(isRequired = OptBoolean.FALSE) val data: T) + + @Test + fun workAround() { + val value = WorkAround(null) + val json = mapper.writeValueAsString(value) + + val deserializedValue = mapper.readValue>(json) + assertEquals(value ,deserializedValue) + } +}