From a16e101fad10d024a84aa36069ec6032fcbaf3e6 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Tue, 30 Jun 2020 08:03:38 +0200 Subject: Implement `AbstractJavadocTemplateMapTest` API --- .../javadoc/AbstractJavadocTemplateMapTest.kt | 69 ++++++++++++++++++++++ .../kotlin/javadoc/JavadocModuleTemplateMapTest.kt | 22 +++++++ 2 files changed, 91 insertions(+) create mode 100644 plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt create mode 100644 plugins/javadoc/src/test/kotlin/javadoc/JavadocModuleTemplateMapTest.kt (limited to 'plugins/javadoc/src/test/kotlin') diff --git a/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt new file mode 100644 index 00000000..7b31d064 --- /dev/null +++ b/plugins/javadoc/src/test/kotlin/javadoc/AbstractJavadocTemplateMapTest.kt @@ -0,0 +1,69 @@ +package javadoc + +import javadoc.pages.JavadocPageNode +import javadoc.renderer.JavadocContentToTemplateMapTranslator +import org.jetbrains.dokka.DokkaConfigurationImpl +import org.jetbrains.dokka.javadoc.JavadocPlugin +import org.jetbrains.dokka.model.withDescendants +import org.jetbrains.dokka.pages.RootPageNode +import org.jetbrains.dokka.plugability.DokkaContext +import org.jetbrains.dokka.plugability.plugin +import org.jetbrains.dokka.plugability.querySingle +import org.jetbrains.dokka.testApi.testRunner.AbstractCoreTest + +internal abstract class AbstractJavadocTemplateMapTest : AbstractCoreTest() { + protected var config: DokkaConfigurationImpl = dokkaConfiguration { + format = "javadoc" + passes { + pass { + sourceRoots = listOf("src") + analysisPlatform = "jvm" + } + } + } + + data class Result( + val rootPageNode: RootPageNode, + val context: DokkaContext + ) { + + val translator: JavadocContentToTemplateMapTranslator by lazy { + val locationProvider = context.plugin() + .querySingle { locationProviderFactory } + .getLocationProvider(rootPageNode) + + JavadocContentToTemplateMapTranslator(locationProvider, context) + } + + val JavadocPageNode.templateMap: Map get() = translator.templateMapForPageNode(this) + + inline fun allPagesOfType(): List { + return rootPageNode.withDescendants().filterIsInstance().toList() + } + + inline fun firstPageOfType(): T { + return rootPageNode.withDescendants().filterIsInstance().first() + } + + inline fun firstPageOfTypeOrNull(): T? { + return rootPageNode.withDescendants().filterIsInstance().firstOrNull() + } + + inline fun singlePageOfType(): T { + return rootPageNode.withDescendants().filterIsInstance().single() + } + } + + fun testTemplateMapInline( + query: String, + configuration: DokkaConfigurationImpl = config, + assertions: Result.() -> Unit + ) { + testInline(query, configuration) { + renderingStage = { rootPageNode, dokkaContext -> + Result(rootPageNode, dokkaContext).assertions() + } + } + } +} + diff --git a/plugins/javadoc/src/test/kotlin/javadoc/JavadocModuleTemplateMapTest.kt b/plugins/javadoc/src/test/kotlin/javadoc/JavadocModuleTemplateMapTest.kt new file mode 100644 index 00000000..732454f7 --- /dev/null +++ b/plugins/javadoc/src/test/kotlin/javadoc/JavadocModuleTemplateMapTest.kt @@ -0,0 +1,22 @@ +package javadoc + +import javadoc.pages.JavadocModulePageNode +import org.junit.jupiter.api.Test + +internal class JavadocModuleTemplateMapTest : AbstractJavadocTemplateMapTest() { + + @Test + fun simpleKotlinExample() { + testTemplateMapInline( + """ + /src/source.kt + package test + class Test + """.trimIndent(), + config + ) { + val moduleContentMap = singlePageOfType().templateMap + println("module") + } + } +} -- cgit