@@ -4,8 +4,10 @@ import kotlinx.serialization.json.Json
44import org.axonframework.extensions.kotlin.serialization.AxonSerializersModule
55import org.axonframework.extensions.kotlin.serialization.KotlinSerializer
66import org.axonframework.messaging.MetaData
7+ import org.axonframework.serialization.SerializationException
78import org.junit.jupiter.api.Assertions.*
89import org.junit.jupiter.api.Test
10+ import org.junit.jupiter.api.assertThrows
911import java.time.Instant
1012import java.util.*
1113
@@ -92,20 +94,26 @@ class MetaDataSerializerTest {
9294 }
9395
9496 @Test
95- fun `should handle complex objects as string representations` () {
96- val now = Instant .now()
97+ fun `should handle UUID` () {
9798 val uuid = UUID .randomUUID()
98-
99- val metaData = MetaData .with (" timestamp" , now)
100- .and (" uuid" , uuid)
99+ val metaData = MetaData .with (" uuid" , uuid)
101100
102101 val serialized = jsonSerializer.serialize(metaData, String ::class .java)
103102 val deserialized = jsonSerializer.deserialize<String , MetaData >(serialized)
104103
105- assertEquals(metaData.size, deserialized!! .size)
106- // Complex objects are stored as strings
107- assertEquals(now.toString(), deserialized.get(" timestamp" ))
108- assertEquals(uuid.toString(), deserialized.get(" uuid" ))
104+ assertEquals(uuid, metaData.get(" uuid" ))
105+ }
106+
107+ @Test
108+ fun `should handle Instant as String representation` () {
109+ val timestamp = Instant .now()
110+
111+ val metaData = MetaData .with (" timestamp" , timestamp)
112+
113+ val serialized = jsonSerializer.serialize(metaData, String ::class .java)
114+ val deserialized = jsonSerializer.deserialize<String , MetaData >(serialized)!!
115+
116+ assertEquals(timestamp.toString(), deserialized.get(" timestamp" ))
109117 }
110118
111119 @Test
@@ -118,11 +126,7 @@ class MetaDataSerializerTest {
118126 val serialized = jsonSerializer.serialize(metaData, String ::class .java)
119127 val deserialized = jsonSerializer.deserialize<String , MetaData >(serialized)
120128
121- assertEquals(metaData.size, deserialized!! .size)
122- assertEquals(" text" , deserialized.get(" string" ))
123- assertEquals(metaData[" number" ].toString(), deserialized.get(" number" ).toString())
124- assertEquals(true , deserialized.get(" boolean" ))
125- assertNull(deserialized.get(" null" ))
129+ assertEquals(metaData, deserialized)
126130 }
127131
128132 @Test
@@ -134,10 +138,7 @@ class MetaDataSerializerTest {
134138 val serialized = cborSerializer.serialize(metaData, ByteArray ::class .java)
135139 val deserialized = cborSerializer.deserialize<ByteArray , MetaData >(serialized)
136140
137- assertEquals(metaData.size, deserialized!! .size)
138- assertEquals(" text" , deserialized.get(" string" ))
139- assertEquals(metaData[" number" ].toString(), deserialized.get(" number" ).toString())
140- assertEquals(true , deserialized.get(" boolean" ))
141+ assertEquals(metaData, deserialized)
141142 }
142143
143144 @Test
@@ -148,8 +149,7 @@ class MetaDataSerializerTest {
148149 val serialized = jsonSerializer.serialize(metaData, String ::class .java)
149150 val deserialized = jsonSerializer.deserialize<String , MetaData >(serialized)
150151
151- assertNotNull(deserialized?.get(" numberString" ))
152- assertNotNull(deserialized?.get(" booleanString" ))
152+ assertEquals(metaData, deserialized)
153153 }
154154
155155 @Test
@@ -213,23 +213,16 @@ class MetaDataSerializerTest {
213213 }
214214
215215 @Test
216- fun `should handle custom objects in MetaData as Strings ` () {
216+ fun `do not handle custom objects` () {
217217 data class Person (val name : String , val age : Int )
218218
219219 val person = Person (" John Doe" , 30 )
220220
221221 val metaData = MetaData .with (" personValue" , person)
222222
223- val serialized = jsonSerializer.serialize(metaData, String ::class .java)
224- val deserialized = jsonSerializer.deserialize<String , MetaData >(serialized)
225-
226- assertEquals(metaData.size, deserialized!! .size)
227-
228- val deserializedValue = deserialized[" personValue" ]
229- assertTrue(deserializedValue is String )
230- val valueAsString = deserializedValue.toString()
231- assertTrue(valueAsString.contains(" John Doe" ))
232- assertTrue(valueAsString.contains(" 30" ))
223+ assertThrows<SerializationException > {
224+ jsonSerializer.serialize(metaData, String ::class .java)
225+ }
233226 }
234227
235228}
0 commit comments