From 3f50846197ffce7e5dcc1c80e360ce6d499d67a6 Mon Sep 17 00:00:00 2001 From: Ignat Beresnev Date: Fri, 21 Jul 2023 13:39:27 +0200 Subject: Add tests for parsing data objects (#3076) --- plugins/base/src/test/kotlin/model/ClassesTest.kt | 14 -------- plugins/base/src/test/kotlin/model/ObjectTest.kt | 39 ++++++++++++++++++++++ ...efaultDescriptorToDocumentableTranslatorTest.kt | 28 ++++++++++++++-- 3 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 plugins/base/src/test/kotlin/model/ObjectTest.kt (limited to 'plugins') diff --git a/plugins/base/src/test/kotlin/model/ClassesTest.kt b/plugins/base/src/test/kotlin/model/ClassesTest.kt index 6a3e80cd..1583e0c9 100644 --- a/plugins/base/src/test/kotlin/model/ClassesTest.kt +++ b/plugins/base/src/test/kotlin/model/ClassesTest.kt @@ -28,20 +28,6 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class } } - @Test - fun emptyObject() { - inlineModelTest( - """ - |object Obj {} - """ - ) { - with((this / "classes" / "Obj").cast()) { - name equals "Obj" - children counts 3 - } - } - } - @Test fun classWithConstructor() { inlineModelTest( diff --git a/plugins/base/src/test/kotlin/model/ObjectTest.kt b/plugins/base/src/test/kotlin/model/ObjectTest.kt new file mode 100644 index 00000000..86045110 --- /dev/null +++ b/plugins/base/src/test/kotlin/model/ObjectTest.kt @@ -0,0 +1,39 @@ +package model + +import org.jetbrains.dokka.model.AdditionalModifiers +import org.jetbrains.dokka.model.DObject +import org.jetbrains.dokka.model.ExtraModifiers +import org.junit.jupiter.api.Test +import utils.AbstractModelTest + +class ObjectTest : AbstractModelTest("/src/main/kotlin/objects/Test.kt", "objects") { + + @Test + fun emptyObject() { + inlineModelTest( + """ + |object Obj {} + """.trimIndent() + ) { + with((this / "objects" / "Obj").cast()) { + name equals "Obj" + children counts 3 + } + } + } + + @Test + fun `data object class`() { + inlineModelTest( + """ + |data object KotlinDataObject {} + """.trimIndent() + ) { + with((this / "objects" / "KotlinDataObject").cast()) { + name equals "KotlinDataObject" + extra[AdditionalModifiers]?.content?.values?.single() + ?.single() equals ExtraModifiers.KotlinOnlyModifiers.Data + } + } + } +} diff --git a/plugins/base/src/test/kotlin/translators/DefaultDescriptorToDocumentableTranslatorTest.kt b/plugins/base/src/test/kotlin/translators/DefaultDescriptorToDocumentableTranslatorTest.kt index 9a96ad29..3a440af0 100644 --- a/plugins/base/src/test/kotlin/translators/DefaultDescriptorToDocumentableTranslatorTest.kt +++ b/plugins/base/src/test/kotlin/translators/DefaultDescriptorToDocumentableTranslatorTest.kt @@ -1,13 +1,13 @@ package translators import org.jetbrains.dokka.DokkaConfiguration +import org.jetbrains.dokka.base.signatures.KotlinSignatureUtils.modifiers import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.links.PointingToDeclaration import org.jetbrains.dokka.model.* import org.jetbrains.dokka.model.doc.* -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test import utils.text @@ -1049,6 +1049,30 @@ val soapXml = node("soap-env:Envelope", soapAttrs, } } } + + @Test + fun `should add data modifier to data objects`() { + testInline( + """ + |/src/main/kotlin/test/KotlinDataObject.kt + |package test + | + |data object KotlinDataObject {} + """.trimIndent(), + configuration + ) { + documentablesMergingStage = { module -> + val pckg = module.packages.single { it.name == "test" } + + val dataObject = pckg.classlikes.single { it.name == "KotlinDataObject" } + assertInstanceOf(DObject::class.java, dataObject) + + val modifiers = (dataObject as DObject).modifiers().values.flatten() + assertEquals(1, modifiers.size) + assertEquals(ExtraModifiers.KotlinOnlyModifiers.Data, modifiers[0]) + } + } + } } private sealed class TestSuite { -- cgit