diff options
author | Ignat Beresnev <ignat.beresnev@jetbrains.com> | 2023-07-21 13:39:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-21 13:39:27 +0200 |
commit | 3f50846197ffce7e5dcc1c80e360ce6d499d67a6 (patch) | |
tree | 32ea1154419f175eff64558bfc1cd536e03459e9 | |
parent | 19d287f288fdb19b510ab24b9dae80c04db88ede (diff) | |
download | dokka-3f50846197ffce7e5dcc1c80e360ce6d499d67a6.tar.gz dokka-3f50846197ffce7e5dcc1c80e360ce6d499d67a6.tar.bz2 dokka-3f50846197ffce7e5dcc1c80e360ce6d499d67a6.zip |
Add tests for parsing data objects (#3076)
3 files changed, 65 insertions, 16 deletions
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 @@ -29,20 +29,6 @@ class ClassesTest : AbstractModelTest("/src/main/kotlin/classes/Test.kt", "class } @Test - fun emptyObject() { - inlineModelTest( - """ - |object Obj {} - """ - ) { - with((this / "classes" / "Obj").cast<DObject>()) { - 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<DObject>()) { + name equals "Obj" + children counts 3 + } + } + } + + @Test + fun `data object class`() { + inlineModelTest( + """ + |data object KotlinDataObject {} + """.trimIndent() + ) { + with((this / "objects" / "KotlinDataObject").cast<DObject>()) { + 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 { |