
kite.lightningserver.shared.0.9.5.source-code.SerializationTest.kt Maven / Gradle / Ivy
@file:OptIn(ExperimentalSerializationApi::class)
package com.lightningkite.lightningdb
import kotlinx.serialization.*
import kotlinx.serialization.json.Json
import kotlinx.serialization.properties.Properties
import kotlinx.serialization.properties.decodeFromStringMap
import kotlinx.serialization.properties.encodeToStringMap
import org.junit.Test
import java.time.Instant
import java.util.*
import kotlin.test.assertEquals
class SerializationTest {
val myJson = Json {
serializersModule = ClientModule
}
val myProperties = Properties(ClientModule)
init {
prepareModels()
}
@Test fun writeThing() {
val out = Partial()
LargeTestModel.path.embeddedNullable.notNull.value1
.setMap(LargeTestModel(embeddedNullable = ClassUsedForEmbedding()), out)
println(out)
}
@Test fun partial() {
val serializer = PartialSerializer(User.serializer())
val part = partialOf(
"_id" to UUID.randomUUID(),
"email" to "[email protected]"
)
val asText = myJson.encodeToString(serializer, part)
println(asText)
println(myJson.decodeFromString(serializer, asText))
println(myJson.decodeFromString(serializer, """{"age": 23}"""))
}
@Test fun partial2() {
val serializer = PartialSerializer(LargeTestModel.serializer())
val part = partialOf(
"embedded" to partialOf(
"value2" to 4
),
"int" to 5
)
val asText = myJson.encodeToString(serializer, part)
println(asText)
println(myJson.decodeFromString(serializer, asText))
println(myJson.decodeFromString(serializer, """{"embedded": { "value1": "Test" }}"""))
}
@Test fun partial3() {
val serializer = serializer>()
val item = QueryPartial(
fields = setOf(
path().int,
path().embeddedNullable.notNull.value1,
)
)
val asText = myJson.encodeToString(serializer, item)
println(asText)
val restored = myJson.decodeFromString(serializer, asText)
assertEquals(item, restored)
}
@Test fun oldSearchStyle() {
myJson.decodeFromString>("""
{ "Search": { "value": "asdf" } }
""".trimIndent())
}
@Test fun executionTest() {
val modification = modification { it.age assign 22 }
val model = User(email = "[email protected]")
assertEquals(22, modification(model).age)
}
@Test fun demoConditions() {
Condition.Equal(2).cycle()
(path().email eq "Dan").cycle()
(path().email eq "Dan").cycle()
(path().content eq "Lightning Kite").cycle()
}
@Test fun demoModifications() {
Modification.Assign(2).cycle()
modification { it.email assign "Dan" }.cycle()
modification { it.content assign "Lightning Kite" }.cycle()
}
@Test fun demoSorts() {
listOf(SortPart(User::email), SortPart(User::age, ascending = false)).cycle()
listOf(SortPart(User::email, ignoreCase = true), SortPart(User::age, ascending = false)).cycle()
}
@Test fun hackTest() {
println(serializer>().listElement())
println(serializer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy