Skip to content

Commit 6e47726

Browse files
add test replay token with complex object as String context
1 parent 89f2383 commit 6e47726

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

kotlin/src/test/kotlin/org/axonframework/extensions/kotlin/serializer/AxonSerializersTest.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
*/
1616
package org.axonframework.extensions.kotlin.serializer
1717

18+
import com.fasterxml.jackson.databind.ObjectMapper
19+
import com.fasterxml.jackson.module.kotlin.KotlinModule
20+
import kotlinx.serialization.Serializable
21+
import kotlinx.serialization.decodeFromString
22+
import kotlinx.serialization.encodeToString
1823
import kotlinx.serialization.json.Json
1924
import org.axonframework.eventhandling.GapAwareTrackingToken
2025
import org.axonframework.eventhandling.GlobalSequenceTrackingToken
@@ -38,6 +43,7 @@ import org.axonframework.serialization.SimpleSerializedObject
3843
import org.axonframework.serialization.SimpleSerializedType
3944
import org.axonframework.serialization.json.JacksonSerializer
4045
import org.junit.jupiter.api.Assertions.assertEquals
46+
import org.junit.jupiter.api.Assertions.assertInstanceOf
4147
import org.junit.jupiter.api.Test
4248

4349
internal class AxonSerializersTest {
@@ -101,6 +107,25 @@ internal class AxonSerializersTest {
101107
assertEquals(token, serializer.deserializeTrackingToken(token.javaClass.name, json))
102108
}
103109

110+
@Test
111+
fun `replay token with complex object as String context`() {
112+
@Serializable
113+
data class ComplexContext(val value1: String, val value2: Int, val value3: Boolean)
114+
val complexContext = ComplexContext("value1", 2, false)
115+
116+
val token = ReplayToken.createReplayToken(
117+
GlobalSequenceTrackingToken(15),
118+
GlobalSequenceTrackingToken(10),
119+
Json.encodeToString(complexContext)
120+
)
121+
val json = """{"tokenAtReset":{"type":"org.axonframework.eventhandling.GlobalSequenceTrackingToken","globalIndex":15},"currentToken":{"type":"org.axonframework.eventhandling.GlobalSequenceTrackingToken","globalIndex":10},"context":"{\"value1\":\"value1\",\"value2\":2,\"value3\":false}"}""".trimIndent()
122+
assertEquals(json, serializer.serialize(token, String::class.java).data)
123+
val deserializedToken = serializer.deserializeTrackingToken(token.javaClass.name, json) as ReplayToken
124+
assertEquals(token, deserializedToken)
125+
assertInstanceOf(String::class.java, deserializedToken.context())
126+
assertEquals(complexContext, Json.decodeFromString<ComplexContext>(deserializedToken.context() as String))
127+
}
128+
104129
@Test
105130
fun globalSequenceTrackingToken() {
106131
val token = GlobalSequenceTrackingToken(5)

0 commit comments

Comments
 (0)