Skip to content

Commit 7cf1334

Browse files
author
Nayan Hajratwala
committed
upgraded unit & cleaned up tests
1 parent 22f8f46 commit 7cf1334

File tree

3 files changed

+76
-79
lines changed

3 files changed

+76
-79
lines changed

build.gradle.kts

+7-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ dependencies {
4747
implementation(files("$projectDir/libs/gradle-processes-0.5.0.jar"))
4848

4949
testImplementation(gradleTestKit())
50-
testImplementation("junit:junit:4.13")
50+
testImplementation(platform("org.junit:junit-bom:5.7.1"))
51+
testImplementation("org.junit.jupiter:junit-jupiter")
5152
testImplementation("com.beust:klaxon:5.2")
5253
}
5354

@@ -76,3 +77,8 @@ tasks {
7677
kotlinOptions.jvmTarget = "1.8"
7778
}
7879
}
80+
81+
tasks.withType<Test>().configureEach {
82+
useJUnitPlatform()
83+
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).takeIf { it > 0 } ?: 1
84+
}

gradle.properties

+4-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
kotlin.code.style=official
1+
kotlin.code.style=official
2+
org.gradle.caching=true
3+
org.gradle.parallel=true
4+
org.gradle.vfs.watch=true

src/test/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePluginTest.kt

+65-77
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,23 @@ import com.beust.klaxon.JsonObject
44
import com.beust.klaxon.Parser
55
import org.gradle.internal.impldep.org.apache.commons.lang.RandomStringUtils
66
import org.gradle.testkit.runner.BuildResult
7-
import org.gradle.testkit.runner.BuildTask
87
import org.gradle.testkit.runner.GradleRunner
98
import org.gradle.testkit.runner.TaskOutcome
10-
import org.junit.Assert.assertEquals
11-
import org.junit.Assert.assertFalse
12-
import org.junit.Before
13-
import org.junit.Rule
14-
import org.junit.Test
15-
import org.junit.rules.TemporaryFolder
9+
import org.junit.jupiter.api.Assertions.assertEquals
10+
import org.junit.jupiter.api.Assertions.assertFalse
11+
import org.junit.jupiter.api.BeforeEach
12+
import org.junit.jupiter.api.Test
1613
import java.io.File
1714
import java.io.FileReader
15+
import java.nio.file.Files
1816

1917
class OpenApiGradlePluginTest {
20-
@Rule
21-
@JvmField
22-
var testProjectDir: TemporaryFolder = TemporaryFolder()
2318

24-
private lateinit var projectTestDir: File
25-
private lateinit var buildFile: File
26-
private lateinit var projectBuildDir: File
19+
private val projectTestDir = Files.createTempDirectory("acceptance-project").toFile()
20+
private val buildFile = File(projectTestDir, "build.gradle")
21+
private val projectBuildDir = File(projectTestDir, "build")
2722

28-
private var baseBuildGradle = """plugins {
23+
private val baseBuildGradle = """plugins {
2924
id 'org.springframework.boot' version '2.2.0.RELEASE'
3025
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
3126
id 'java'
@@ -47,16 +42,9 @@ class OpenApiGradlePluginTest {
4742
}
4843
""".trimIndent()
4944

50-
@Before
51-
fun setup() {
52-
val acceptanceTestProject = File(this.javaClass.classLoader.getResource("acceptance-project")!!.path)
53-
projectTestDir = File(testProjectDir.newFolder(), "acceptence-project")
54-
55-
acceptanceTestProject.copyRecursively(projectTestDir)
56-
buildFile = File(projectTestDir, "build.gradle")
57-
58-
projectBuildDir = File(projectTestDir, "build")
59-
println("!!!!! $projectBuildDir !!!!!!!")
45+
@BeforeEach
46+
fun createTemporaryAcceptanceProjectFromTemplate() {
47+
File(javaClass.classLoader.getResource("acceptance-project")!!.path).copyRecursively(projectTestDir)
6048
}
6149

6250
@Test
@@ -69,165 +57,173 @@ class OpenApiGradlePluginTest {
6957
.withPluginClasspath()
7058
.build()
7159

72-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
60+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
7361

7462
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
7563
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
7664
}
7765

7866
@Test
7967
fun `different output dir`() {
80-
var specialOutputDir = File(projectTestDir, "specialDir")
68+
val specialOutputDir = File(projectTestDir, "specialDir")
8169
specialOutputDir.mkdirs()
8270

83-
buildFile.writeText("""$baseBuildGradle
71+
buildFile.writeText(
72+
"""$baseBuildGradle
8473
openApi{
8574
outputDir = file("${specialOutputDir.toURI().path}")
8675
}
87-
""".trimMargin())
76+
""".trimMargin()
77+
)
8878

8979
val result = GradleRunner.create()
9080
.withProjectDir(projectTestDir)
9181
.withArguments("clean", "generateOpenApiDocs")
9282
.withPluginClasspath()
9383
.build()
9484

95-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
85+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
9686

9787
val openApiJsonFile = File(specialOutputDir, DEFAULT_OPEN_API_FILE_NAME)
9888
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
9989
}
10090

10191
@Test
10292
fun `different output file name`() {
103-
var specialOutputJsonFileName = RandomStringUtils.randomAlphanumeric(15)
93+
val specialOutputJsonFileName = RandomStringUtils.randomAlphanumeric(15)
10494

105-
buildFile.writeText("""$baseBuildGradle
95+
buildFile.writeText(
96+
"""$baseBuildGradle
10697
openApi{
10798
outputFileName = "$specialOutputJsonFileName"
10899
}
109-
""".trimMargin())
100+
""".trimMargin()
101+
)
110102

111103
val result = GradleRunner.create()
112104
.withProjectDir(projectTestDir)
113105
.withArguments("clean", "generateOpenApiDocs")
114106
.withPluginClasspath()
115107
.build()
116108

117-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
109+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
118110

119111
val openApiJsonFile = File(projectBuildDir, specialOutputJsonFileName)
120112
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
121113
}
122114

123115
@Test
124116
fun `using forked properties`() {
125-
buildFile.writeText("""$baseBuildGradle
117+
buildFile.writeText(
118+
"""$baseBuildGradle
126119
openApi{
127120
forkProperties = "-Dspring.profiles.active=multiple-endpoints -Dsome.second.property=someValue"
128121
}
129-
""".trimMargin())
122+
""".trimMargin()
123+
)
130124

131125
val result = GradleRunner.create()
132126
.withProjectDir(projectTestDir)
133127
.withArguments("clean", "generateOpenApiDocs")
134128
.withPluginClasspath()
135129
.build()
136130

137-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
131+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
138132

139133
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
140134
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 3)
141135
}
142136

143137
@Test
144138
fun `using forked properties via System properties`() {
145-
buildFile.writeText("""$baseBuildGradle
139+
buildFile.writeText(
140+
"""$baseBuildGradle
146141
openApi{
147142
forkProperties = System.properties
148143
}
149-
""".trimMargin())
144+
""".trimMargin()
145+
)
150146

151147
val result = GradleRunner.create()
152148
.withProjectDir(projectTestDir)
153149
.withArguments("clean", "generateOpenApiDocs", "-Dspring.profiles.active=multiple-endpoints")
154150
.withPluginClasspath()
155151
.build()
156152

157-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
153+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
158154

159155
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
160156
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 2)
161157
}
162158

163159
@Test
164160
fun `configurable wait time`() {
165-
buildFile.writeText("""$baseBuildGradle
161+
buildFile.writeText(
162+
"""$baseBuildGradle
166163
openApi{
167164
forkProperties = "-Dspring.profiles.active=slower"
168165
waitTimeInSeconds = 60
169166
}
170-
""".trimMargin())
167+
""".trimMargin()
168+
)
171169

172170
val result = GradleRunner.create()
173171
.withProjectDir(projectTestDir)
174172
.withArguments("clean", "generateOpenApiDocs")
175173
.withPluginClasspath()
176174
.build()
177175

178-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
176+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
179177

180178
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
181179
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
182180
}
183181

184182
@Test
185183
fun `using different api url`() {
186-
buildFile.writeText("""$baseBuildGradle
184+
buildFile.writeText(
185+
"""$baseBuildGradle
187186
openApi{
188187
apiDocsUrl = "http://localhost:8080/secret-api-docs"
189188
forkProperties = "-Dspring.profiles.active=different-url"
190189
}
191-
""".trimMargin())
190+
""".trimMargin()
191+
)
192192

193193
val result = GradleRunner.create()
194194
.withProjectDir(projectTestDir)
195195
.withArguments("clean", "generateOpenApiDocs")
196196
.withPluginClasspath()
197197
.build()
198198

199-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
200-
201-
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
202-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
199+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
200+
assertOpenApiJsonFileIsAsExpected(File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME), 1)
203201
}
204202

205203
@Test
206204
fun `using multiple grouped apis`() {
207205
val outputJsonFileNameGroupA = "openapi-groupA.json"
208206
val outputJsonFileNameGroupB = "openapi-groupB.json"
209207

210-
buildFile.writeText("""$baseBuildGradle
208+
buildFile.writeText(
209+
"""$baseBuildGradle
211210
openApi{
212211
groupedApiMappings = ["http://localhost:8080/v3/api-docs/groupA": "$outputJsonFileNameGroupA",
213212
"http://localhost:8080/v3/api-docs/groupB": "$outputJsonFileNameGroupB"]
214213
forkProperties = "-Dspring.profiles.active=multiple-grouped-apis"
215214
}
216-
""".trimMargin())
215+
""".trimMargin()
216+
)
217217

218218
val result = GradleRunner.create()
219219
.withProjectDir(projectTestDir)
220220
.withArguments("clean", "generateOpenApiDocs")
221221
.withPluginClasspath()
222222
.build()
223223

224-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
225-
226-
val openApiJsonFileGroupA = File(projectBuildDir, outputJsonFileNameGroupA)
227-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupA, 1)
228-
229-
val openApiJsonFileGroupB = File(projectBuildDir, outputJsonFileNameGroupB)
230-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupB, 2)
224+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
225+
assertOpenApiJsonFileIsAsExpected(File(projectBuildDir, outputJsonFileNameGroupA), 1)
226+
assertOpenApiJsonFileIsAsExpected(File(projectBuildDir, outputJsonFileNameGroupB), 2)
231227
}
232228

233229
@Test
@@ -236,45 +232,37 @@ class OpenApiGradlePluginTest {
236232
val outputJsonFileNameGroupA = "openapi-groupA.json"
237233
val outputJsonFileNameGroupB = "openapi-groupB.json"
238234

239-
buildFile.writeText("""$baseBuildGradle
235+
buildFile.writeText(
236+
"""$baseBuildGradle
240237
openApi{
241238
apiDocsUrl = "http://localhost:8080/v3/api-docs/groupA"
242239
outputFileName = "$outputJsonFileNameSingleGroupA"
243240
groupedApiMappings = ["http://localhost:8080/v3/api-docs/groupA": "$outputJsonFileNameGroupA",
244241
"http://localhost:8080/v3/api-docs/groupB": "$outputJsonFileNameGroupB"]
245242
forkProperties = "-Dspring.profiles.active=multiple-grouped-apis"
246243
}
247-
""".trimMargin())
244+
""".trimMargin()
245+
)
248246

249247
val result = GradleRunner.create()
250248
.withProjectDir(projectTestDir)
251249
.withArguments("clean", "generateOpenApiDocs")
252250
.withPluginClasspath()
253251
.build()
254252

255-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
256-
257-
val openApiJsonFileSingleGroupA = File(projectBuildDir, outputJsonFileNameSingleGroupA)
258-
assertFalse(openApiJsonFileSingleGroupA.exists())
259-
260-
val openApiJsonFileGroupA = File(projectBuildDir, outputJsonFileNameGroupA)
261-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupA, 1)
262-
263-
val openApiJsonFileGroupB = File(projectBuildDir, outputJsonFileNameGroupB)
264-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupB, 2)
253+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(result).outcome)
254+
assertFalse(File(projectBuildDir, outputJsonFileNameSingleGroupA).exists())
255+
assertOpenApiJsonFileIsAsExpected(File(projectBuildDir, outputJsonFileNameGroupA), 1)
256+
assertOpenApiJsonFileIsAsExpected(File(projectBuildDir, outputJsonFileNameGroupB), 2)
265257
}
266258

267259
private fun assertOpenApiJsonFileIsAsExpected(openApiJsonFile: File, expectedNumberOfPaths: Int) {
268260
val openApiJson = getOpenApiJsonAtLocation(openApiJsonFile)
269-
assertEquals("3.0.1", openApiJson!!.string("openapi"))
261+
assertEquals("3.0.1", openApiJson.string("openapi"))
270262
assertEquals(expectedNumberOfPaths, openApiJson.obj("paths")!!.size)
271263
}
272264

273-
private fun getOpenApiJsonAtLocation(path: File): JsonObject? {
274-
return Parser.default().parse(FileReader(path)) as JsonObject
275-
}
265+
private fun getOpenApiJsonAtLocation(path: File) = Parser.default().parse(FileReader(path)) as JsonObject
276266

277-
private fun getTaskByName(result: BuildResult, name: String): BuildTask? {
278-
return result.tasks.find { it.path.contains(name) }
279-
}
280-
}
267+
private fun openApiDocsTask(result: BuildResult) = result.tasks.find { it.path.contains("generateOpenApiDocs") }!!
268+
}

0 commit comments

Comments
 (0)