Kotlin Serialization Snippets

Konsist can be used to guard the consistency of classes related to the [Kotlin Serialization](https://kotlinlang. org/docs/serialization.html) library.

1. Classes Annotated With Serializable Have All Properties Annotated With SerialName

@Test
fun `classes annotated with 'Serializable' have all properties annotated with 'SerialName'`() {
    Konsist
        .scopeFromProject()
        .classes()
        .withAnnotationOf(Serializable::class)
        .properties()
        .assertTrue {
            it.hasAnnotationOf(SerialName::class)
        }
}

2. Enum Classes Annotated With Serializable Have All Enum Constants Annotated With SerialName

@Test
fun `enum classes annotated with 'Serializable' have all enum constants annotated with 'SerialName'`() {
    Konsist.scopeFromProject()
        .classes()
        .withEnumModifier()
        .withAnnotationOf(Serializable::class)
        .enumConstants
        .assertTrue { it.hasAnnotationOf(SerialName::class) }
}

3. All Models Are Serializable

@Test
fun `all models are serializable`() {
    Konsist
        .scopeFromPackage("com.myapp.model..")
        .classes()
        .assertTrue {
            it.hasAnnotationOf(Serializable::class)
        }
}

Last updated