diff --git a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt index c454fc648..e9cf90625 100644 --- a/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt +++ b/quartz/src/jvmAndroidTest/kotlin/com/vitorpamplona/quartz/nip01Core/jackson/JacksonMapperTest.kt @@ -20,28 +20,60 @@ */ package com.vitorpamplona.quartz.nip01Core.jackson +import com.vitorpamplona.quartz.nip01Core.core.Event +import com.vitorpamplona.quartz.nip01Core.signers.EventTemplate +import com.vitorpamplona.quartz.nip51Lists.followList.FollowListEvent +import com.vitorpamplona.quartz.nip59Giftwrap.rumors.Rumor import kotlin.test.Test import kotlin.test.assertContentEquals import kotlin.test.assertEquals class JacksonMapperTest { + val tags = + arrayOf( + arrayOf("title", "Retro Computer Fans"), + arrayOf("d", "xmbspe8rddsq"), + arrayOf("image", "https://blog.johnnovak.net/2022/04/15/achieving-period-correct-graphics-in-personal-computer-emulators-part-1-the-amiga/img/dream-setup.jpg"), + arrayOf("p", "3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da"), + arrayOf("p", "9a9a4aa0e43e57873380ab22e8a3df12f3c4cf5bb3a804c6e3fed0069a6e2740"), + arrayOf("p", "4f5dd82517b11088ce00f23d99f06fe8f3e2e45ecf47bc9c2f90f34d5c6f7382"), + arrayOf("p", "ac92102a2ecb873c488e0125354ef5a97075a16198668c360eda050007ed42cd"), + arrayOf("p", "47f54409a4620eb35208a3bc1b53555bf3d0656b246bf0471a93208e20672f6f"), + arrayOf("p", "2624911545afb7a2b440cf10f5c69308afa33aae26fca664d8c94623dc0f1baf"), + arrayOf("p", "6641f26f5c59f7010dbe3e42e4593398e27c087497cb7d20e0e7633a17e48a94"), + arrayOf("description", "Retro computer fans and enthusiasts "), + ) + + val followCard = + FollowListEvent( + id = "eca31634fce7c9068b56fa8db9f387da70bdcceb3986a77ca1a9844f3128eb5f", + pubKey = "3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da", + createdAt = 1761736286, + tags = tags, + content = "", + sig = "3aa388edafad151e81cb0228fe04e115dbbcaa851c666bfe3c8740b6cd99575f0fc3ba2d47acda86f7626564a05e9dbc05ef452a7bd0ac00f828dbad0e1bae6c", + ) + + val followCardRumor = + Rumor( + id = followCard.id, + pubKey = followCard.pubKey, + createdAt = followCard.createdAt, + kind = followCard.kind, + tags = followCard.tags, + content = followCard.content, + ) + + val followCardTemplate = + EventTemplate( + createdAt = followCard.createdAt, + kind = followCard.kind, + tags = followCard.tags, + content = followCard.content, + ) + @Test fun serializeTagArray() { - val tags = - arrayOf( - arrayOf("title", "Retro Computer Fans"), - arrayOf("d", "xmbspe8rddsq"), - arrayOf("image", "https://blog.johnnovak.net/2022/04/15/achieving-period-correct-graphics-in-personal-computer-emulators-part-1-the-amiga/img/dream-setup.jpg"), - arrayOf("p", "3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da"), - arrayOf("p", "9a9a4aa0e43e57873380ab22e8a3df12f3c4cf5bb3a804c6e3fed0069a6e2740"), - arrayOf("p", "4f5dd82517b11088ce00f23d99f06fe8f3e2e45ecf47bc9c2f90f34d5c6f7382"), - arrayOf("p", "ac92102a2ecb873c488e0125354ef5a97075a16198668c360eda050007ed42cd"), - arrayOf("p", "47f54409a4620eb35208a3bc1b53555bf3d0656b246bf0471a93208e20672f6f"), - arrayOf("p", "2624911545afb7a2b440cf10f5c69308afa33aae26fca664d8c94623dc0f1baf"), - arrayOf("p", "6641f26f5c59f7010dbe3e42e4593398e27c087497cb7d20e0e7633a17e48a94"), - arrayOf("description", "Retro computer fans and enthusiasts "), - ) - val serialized = JacksonMapper.toJson(tags) assertEquals( @@ -55,4 +87,69 @@ class JacksonMapperTest { assertContentEquals(tag, deserialized[index]) } } + + @Test + fun serializeEvent() { + val serialized = JacksonMapper.toJson(followCard) + + assertEquals( + "{\"id\":\"eca31634fce7c9068b56fa8db9f387da70bdcceb3986a77ca1a9844f3128eb5f\",\"pubkey\":\"3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da\",\"created_at\":1761736286,\"kind\":39089,\"tags\":[[\"title\",\"Retro Computer Fans\"],[\"d\",\"xmbspe8rddsq\"],[\"image\",\"https://blog.johnnovak.net/2022/04/15/achieving-period-correct-graphics-in-personal-computer-emulators-part-1-the-amiga/img/dream-setup.jpg\"],[\"p\",\"3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da\"],[\"p\",\"9a9a4aa0e43e57873380ab22e8a3df12f3c4cf5bb3a804c6e3fed0069a6e2740\"],[\"p\",\"4f5dd82517b11088ce00f23d99f06fe8f3e2e45ecf47bc9c2f90f34d5c6f7382\"],[\"p\",\"ac92102a2ecb873c488e0125354ef5a97075a16198668c360eda050007ed42cd\"],[\"p\",\"47f54409a4620eb35208a3bc1b53555bf3d0656b246bf0471a93208e20672f6f\"],[\"p\",\"2624911545afb7a2b440cf10f5c69308afa33aae26fca664d8c94623dc0f1baf\"],[\"p\",\"6641f26f5c59f7010dbe3e42e4593398e27c087497cb7d20e0e7633a17e48a94\"],[\"description\",\"Retro computer fans and enthusiasts \"]],\"content\":\"\",\"sig\":\"3aa388edafad151e81cb0228fe04e115dbbcaa851c666bfe3c8740b6cd99575f0fc3ba2d47acda86f7626564a05e9dbc05ef452a7bd0ac00f828dbad0e1bae6c\"}", + serialized, + ) + + val deserialized = JacksonMapper.fromJson(serialized) + + assertEquals(followCard.id, deserialized.id) + assertEquals(followCard.kind, deserialized.kind) + assertEquals(followCard.createdAt, deserialized.createdAt) + assertEquals(followCard.pubKey, deserialized.pubKey) + assertEquals(followCard.content, deserialized.content) + assertEquals(followCard.sig, deserialized.sig) + + tags.forEachIndexed { index, tag -> + assertContentEquals(tag, deserialized.tags[index]) + } + } + + @Test + fun serializeRumor() { + val serialized = JacksonMapper.toJson(followCardRumor) + + assertEquals( + "{\"id\":\"eca31634fce7c9068b56fa8db9f387da70bdcceb3986a77ca1a9844f3128eb5f\",\"pubkey\":\"3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da\",\"created_at\":1761736286,\"kind\":39089,\"tags\":[[\"title\",\"Retro Computer Fans\"],[\"d\",\"xmbspe8rddsq\"],[\"image\",\"https://blog.johnnovak.net/2022/04/15/achieving-period-correct-graphics-in-personal-computer-emulators-part-1-the-amiga/img/dream-setup.jpg\"],[\"p\",\"3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da\"],[\"p\",\"9a9a4aa0e43e57873380ab22e8a3df12f3c4cf5bb3a804c6e3fed0069a6e2740\"],[\"p\",\"4f5dd82517b11088ce00f23d99f06fe8f3e2e45ecf47bc9c2f90f34d5c6f7382\"],[\"p\",\"ac92102a2ecb873c488e0125354ef5a97075a16198668c360eda050007ed42cd\"],[\"p\",\"47f54409a4620eb35208a3bc1b53555bf3d0656b246bf0471a93208e20672f6f\"],[\"p\",\"2624911545afb7a2b440cf10f5c69308afa33aae26fca664d8c94623dc0f1baf\"],[\"p\",\"6641f26f5c59f7010dbe3e42e4593398e27c087497cb7d20e0e7633a17e48a94\"],[\"description\",\"Retro computer fans and enthusiasts \"]],\"content\":\"\"}", + serialized, + ) + + val deserialized = JacksonMapper.fromJson(serialized) + + assertEquals(followCardRumor.id, deserialized.id) + assertEquals(followCardRumor.kind, deserialized.kind) + assertEquals(followCardRumor.createdAt, deserialized.createdAt) + assertEquals(followCardRumor.pubKey, deserialized.pubKey) + assertEquals(followCardRumor.content, deserialized.content) + + tags.forEachIndexed { index, tag -> + assertContentEquals(tag, deserialized.tags[index]) + } + } + + @Test + fun serializeTemplate() { + val serialized = JacksonMapper.toJson(followCardTemplate) + + assertEquals( + "{\"created_at\":1761736286,\"kind\":39089,\"tags\":[[\"title\",\"Retro Computer Fans\"],[\"d\",\"xmbspe8rddsq\"],[\"image\",\"https://blog.johnnovak.net/2022/04/15/achieving-period-correct-graphics-in-personal-computer-emulators-part-1-the-amiga/img/dream-setup.jpg\"],[\"p\",\"3c39a7b53dec9ac85acf08b267637a9841e6df7b7b0f5e2ac56a8cf107de37da\"],[\"p\",\"9a9a4aa0e43e57873380ab22e8a3df12f3c4cf5bb3a804c6e3fed0069a6e2740\"],[\"p\",\"4f5dd82517b11088ce00f23d99f06fe8f3e2e45ecf47bc9c2f90f34d5c6f7382\"],[\"p\",\"ac92102a2ecb873c488e0125354ef5a97075a16198668c360eda050007ed42cd\"],[\"p\",\"47f54409a4620eb35208a3bc1b53555bf3d0656b246bf0471a93208e20672f6f\"],[\"p\",\"2624911545afb7a2b440cf10f5c69308afa33aae26fca664d8c94623dc0f1baf\"],[\"p\",\"6641f26f5c59f7010dbe3e42e4593398e27c087497cb7d20e0e7633a17e48a94\"],[\"description\",\"Retro computer fans and enthusiasts \"]],\"content\":\"\"}", + serialized, + ) + + val deserialized = JacksonMapper.fromJson(serialized) + + assertEquals(followCardTemplate.kind, deserialized.kind) + assertEquals(followCardTemplate.createdAt, deserialized.createdAt) + assertEquals(followCardTemplate.content, deserialized.content) + + tags.forEachIndexed { index, tag -> + assertContentEquals(tag, deserialized.tags[index]) + } + } }