Skip to content

Commit d0d8930

Browse files
committed
fix tests
1 parent 5e18011 commit d0d8930

File tree

2 files changed

+70
-44
lines changed

2 files changed

+70
-44
lines changed

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ dependencies {
2929
// test libs
3030
testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
3131
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
32+
// https://mvnrepository.com/artifact/io.mockk/mockk
33+
testImplementation("io.mockk:mockk:1.12.2")
3234

3335
testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
3436
}
Lines changed: 68 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,84 @@
11
package com.fasterxml.jackson.module.kotlin._ported.test
22

3-
import com.fasterxml.jackson.core.JsonGenerator
4-
import com.fasterxml.jackson.core.JsonParser
53
import com.fasterxml.jackson.databind.*
64
import com.fasterxml.jackson.databind.module.SimpleModule
75
import com.fasterxml.jackson.module.kotlin.addDeserializer
86
import com.fasterxml.jackson.module.kotlin.addSerializer
9-
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
10-
import com.fasterxml.jackson.module.kotlin.readValue
11-
import org.junit.jupiter.api.Assertions.assertEquals
7+
import io.mockk.confirmVerified
8+
import io.mockk.every
9+
import io.mockk.mockk
10+
import io.mockk.verify
11+
import org.junit.jupiter.api.Nested
1212
import org.junit.jupiter.api.Test
13-
import java.math.BigDecimal
14-
import java.math.RoundingMode
1513

1614
private class KClassSerializerDeserializerTest {
17-
val objectMapper = jacksonObjectMapper()
18-
.registerModule(SimpleModule()
19-
.addSerializer(Double::class, RoundingSerializer())
20-
.addDeserializer(Double::class, RoundingDeserializer()))
21-
22-
@Test
23-
fun `test custom serializer expecting object serialized with rounding serializer applied`() {
24-
val jsonString = objectMapper.writeValueAsString(TestDoubleData(nonNullVal = 1.5567, nullVal = 1.5678))
25-
val testResult = objectMapper.readValue(jsonString, TestDoubleData::class.java)
26-
assertEquals(1.56, testResult.nonNullVal)
27-
assertEquals(1.57, testResult.nullVal)
28-
}
15+
@Nested
16+
inner class AddDeserializerTest {
17+
val module = mockk<SimpleModule> {
18+
every { addDeserializer(any<Class<*>>(), any()) } returns this
19+
}
2920

30-
@Test
31-
fun `test custom deserializer expecting object deserialized with rounding deserializer applied`() {
32-
val testResult = objectMapper.readValue<TestDoubleData>("""
33-
{
34-
"nonNullVal":1.5567,
35-
"nullVal":1.5678
36-
}
37-
""".trimIndent())
38-
assertEquals(1.56, testResult.nonNullVal)
39-
assertEquals(1.57, testResult.nullVal)
40-
}
41-
}
21+
@Test
22+
fun primitiveType() {
23+
val mockDeserializer: JsonDeserializer<Double> = mockk()
24+
module.addDeserializer(Double::class, mockDeserializer)
25+
26+
verify(exactly = 1) { module.addDeserializer(Double::class.javaPrimitiveType, mockDeserializer) }
27+
verify(exactly = 1) { module.addDeserializer(Double::class.javaObjectType, mockDeserializer) }
28+
}
4229

43-
data class TestDoubleData(
44-
val nonNullVal: Double,
45-
val nullVal: Double?
46-
)
30+
@Test
31+
fun objectType() {
32+
val mockDeserializer: JsonDeserializer<Any> = mockk()
33+
module.addDeserializer(Any::class, mockDeserializer)
4734

48-
class RoundingSerializer : JsonSerializer<Double>() {
49-
override fun serialize(value: Double?, gen: JsonGenerator?, serializers: SerializerProvider?) {
50-
value?.let { gen?.writeNumber(BigDecimal(it).setScale(2, RoundingMode.HALF_UP)) }
35+
verify(exactly = 1) { module.addDeserializer(Any::class.javaObjectType, mockDeserializer) }
36+
confirmVerified(module)
37+
}
38+
39+
@Test
40+
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
41+
fun wrapperType() {
42+
val mockDeserializer: JsonDeserializer<Integer> = mockk()
43+
module.addDeserializer(Integer::class, mockDeserializer)
44+
45+
verify(exactly = 1) { module.addDeserializer(Integer::class.javaPrimitiveType, mockDeserializer) }
46+
verify(exactly = 1) { module.addDeserializer(Integer::class.javaObjectType, mockDeserializer) }
47+
}
5148
}
52-
}
5349

54-
class RoundingDeserializer : JsonDeserializer<Double>() {
55-
override fun deserialize(p: JsonParser?, ctxt: DeserializationContext?): Double {
56-
return BigDecimal(p?.valueAsString)
57-
.setScale(2, RoundingMode.HALF_UP)
58-
.toDouble()
50+
@Nested
51+
inner class AddSerializerTest {
52+
val module = mockk<SimpleModule> {
53+
every { addSerializer(any<Class<*>>(), any()) } returns this
54+
}
55+
56+
@Test
57+
fun primitiveType() {
58+
val mockSerializer: JsonSerializer<Double> = mockk()
59+
module.addSerializer(Double::class, mockSerializer)
60+
61+
verify(exactly = 1) { module.addSerializer(Double::class.javaPrimitiveType, mockSerializer) }
62+
verify(exactly = 1) { module.addSerializer(Double::class.javaObjectType, mockSerializer) }
63+
}
64+
65+
@Test
66+
fun objectType() {
67+
val mockSerializer: JsonSerializer<Any> = mockk()
68+
module.addSerializer(Any::class, mockSerializer)
69+
70+
verify(exactly = 1) { module.addSerializer(Any::class.javaObjectType, mockSerializer) }
71+
confirmVerified(module)
72+
}
73+
74+
@Test
75+
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
76+
fun wrapperType() {
77+
val mockSerializer: JsonSerializer<Integer> = mockk()
78+
module.addSerializer(Integer::class, mockSerializer)
79+
80+
verify(exactly = 1) { module.addSerializer(Integer::class.javaPrimitiveType, mockSerializer) }
81+
verify(exactly = 1) { module.addSerializer(Integer::class.javaObjectType, mockSerializer) }
82+
}
5983
}
6084
}

0 commit comments

Comments
 (0)