forked from loafle/openapi-generator-original
* [gradle-plugin] Initial commit * Clarify comments on file constraints When a user sets the models, apis, or supportingFiles environment variables, any one of these being set disables generation for the other two. This could be confusing to users, so I've added some clarification text in the comments for these properties. In addition, I've cleaned up the extension on Property.ifNotEmpty, to avoid using Suppress annotations where it's not necessary. The change creates a local variable of type T?, allowing Kotlin to track the variable's nullable state at compile time. * Move gradle plugin under modules * Move kt files under kotlin source set. Add sample. * [gradle] map-like options as maps * Add tests for gradle validate task * Apply gradle plugin to mvn install phase * [gradle] Testing remaining gradle tasks * Add gradle plugin to the integration doc * Update gradle plugin README with task options * Gradle readme formatting
71 lines
2.8 KiB
Kotlin
71 lines
2.8 KiB
Kotlin
package org.openapitools.generator.gradle.plugin
|
|
|
|
import org.gradle.testkit.runner.GradleRunner
|
|
import org.gradle.testkit.runner.TaskOutcome
|
|
import org.testng.annotations.Test
|
|
import java.io.File
|
|
import kotlin.test.assertEquals
|
|
import kotlin.test.assertTrue
|
|
|
|
class GenerateTaskDslTest : TestBase() {
|
|
override var temp: File = createTempDir(javaClass.simpleName)
|
|
|
|
private val defaultBuildGradle = """
|
|
plugins {
|
|
id 'org.openapi.generator'
|
|
}
|
|
openApiGenerate {
|
|
generatorName = "kotlin"
|
|
inputSpec = file("spec.yaml").absolutePath
|
|
outputDir = file("build/kotlin").absolutePath
|
|
apiPackage = "org.openapitools.example.api"
|
|
invokerPackage = "org.openapitools.example.invoker"
|
|
modelPackage = "org.openapitools.example.model"
|
|
configOptions = [
|
|
dateLibrary: "java8"
|
|
]
|
|
}
|
|
""".trimIndent()
|
|
|
|
@Test
|
|
fun `openApiGenerate should create an expected file structure from DSL config`() {
|
|
// Arrange
|
|
val projectFiles = mapOf(
|
|
"spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml")
|
|
)
|
|
withProject(defaultBuildGradle, projectFiles)
|
|
|
|
// Act
|
|
val result = GradleRunner.create()
|
|
.withProjectDir(temp)
|
|
.withArguments("openApiGenerate")
|
|
.withPluginClasspath()
|
|
.build()
|
|
|
|
// Assert
|
|
assertTrue(result.output.contains("Successfully generated code to"), "User friendly generate notice is missing.")
|
|
|
|
listOf(
|
|
"build/kotlin/.openapi-generator-ignore",
|
|
"build/kotlin/docs/PetsApi.md",
|
|
"build/kotlin/docs/Pets.md",
|
|
"build/kotlin/docs/Error.md",
|
|
"build/kotlin/docs/Pet.md",
|
|
"build/kotlin/README.md",
|
|
"build/kotlin/build.gradle",
|
|
"build/kotlin/.openapi-generator/VERSION",
|
|
"build/kotlin/settings.gradle",
|
|
"build/kotlin/src/main/kotlin/org/openapitools/example/model/Pets.kt",
|
|
"build/kotlin/src/main/kotlin/org/openapitools/example/model/Pet.kt",
|
|
"build/kotlin/src/main/kotlin/org/openapitools/example/model/Error.kt",
|
|
"build/kotlin/src/main/kotlin/org/openapitools/example/api/PetsApi.kt",
|
|
"build/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt"
|
|
).map {
|
|
val f = File(temp, it)
|
|
assertTrue(f.exists() && f.isFile, "An expected file was not generated when invoking the generation.")
|
|
}
|
|
|
|
assertEquals(TaskOutcome.SUCCESS, result.task(":openApiGenerate")?.outcome,
|
|
"Expected a successful run, but found ${result.task(":openApiGenerate")?.outcome}")
|
|
}
|
|
} |