diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifier.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifier.kt index d184438d5e..cc6d97f46e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifier.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifier.kt @@ -51,7 +51,7 @@ internal object ChatIdentifierSerializer : KSerializer { override fun serialize(encoder: Encoder, obj: ChatIdentifier) { when (obj) { - is ChatId -> encoder.encodeString(obj.chatId.toString()) + is ChatId -> encoder.encodeLong(obj.chatId) is Username -> encoder.encodeString(obj.username) } } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDate.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDate.kt index 9b53bc3b2b..ff71a73f73 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDate.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDate.kt @@ -5,7 +5,10 @@ import org.joda.time.DateTime import java.util.concurrent.TimeUnit @Serializable(TelegramDateSerializer::class) -class TelegramDate( +data class TelegramDate( + /** + * Contains UNIX time (seconds) + */ private val date: Long ) { constructor(dateTime: DateTime) : this( diff --git a/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifierTests.kt b/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifierTests.kt index 94c7798a5f..bcf6f87870 100644 --- a/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifierTests.kt +++ b/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatIdentifierTests.kt @@ -55,7 +55,7 @@ class ChatIdentifierTests { Example(chatIdentifierChatId.toChatId()).let { withChatId -> val stringified = Json.plain.stringify(Example.serializer(), withChatId) - assertEquals(stringified, "{\"identifier\":\"$chatIdentifierChatId\"}") + assertEquals(stringified, "{\"identifier\":$chatIdentifierChatId}") val deserialized = Json.plain.parse(Example.serializer(), stringified) assertEquals(withChatId, deserialized) } diff --git a/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDateTests.kt b/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDateTests.kt new file mode 100644 index 0000000000..ee9fd95ead --- /dev/null +++ b/src/test/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/TelegramDateTests.kt @@ -0,0 +1,33 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types + +import kotlinx.serialization.ImplicitReflectionSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import org.joda.time.DateTime +import java.util.concurrent.TimeUnit +import kotlin.test.Test +import kotlin.test.assertEquals + +private val dateTimeMillis = System.currentTimeMillis() +private val dateTimeUnix = TimeUnit.MILLISECONDS.toSeconds(dateTimeMillis) +private val dateTime = DateTime(TimeUnit.SECONDS.toMillis(dateTimeUnix)) + +@ImplicitReflectionSerializer +class TelegramDateTests { + @Serializable + data class Example( + val dateTime: TelegramDate + ) + @Test + fun `Serializtion of TelegramDate is working correctly`() { + val example = Example(TelegramDate(dateTimeUnix)) + + val stringified = Json.plain.stringify(Example.serializer(), example) + assertEquals("{\"dateTime\":$dateTimeUnix}", stringified) + + val deserialized = Json.plain.parse(Example.serializer(), stringified) + assertEquals(example, deserialized) + + assertEquals(dateTime, deserialized.dateTime.asDate) + } +}