Skip to content
This repository was archived by the owner on Mar 16, 2025. It is now read-only.

Commit e403174

Browse files
committed
fixed id/type split (object & enum), #65
1 parent d9caf46 commit e403174

File tree

2 files changed

+39
-69
lines changed

2 files changed

+39
-69
lines changed

src/main/kotlin/io/openapiprocessor/core/writer/java/ApiWriter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class ApiWriter(
7474

7575
private fun writeObjectDataTypes(api: Api) {
7676
api.forEachModelDataType {
77-
val target = modelFolder.resolve ("${it.getName()}.java")
77+
val target = modelFolder.resolve ("${it.getTypeName()}.java")
7878
val writer = BufferedWriter(PathWriter(target))
7979
writeDataType(writer, it)
8080
writer.close()
@@ -83,7 +83,7 @@ class ApiWriter(
8383

8484
private fun writeEnumDataTypes(api: Api) {
8585
api.forEachEnumDataType {
86-
val target = modelFolder.resolve("${it.getName()}.java")
86+
val target = modelFolder.resolve("${it.getTypeName()}.java")
8787
val writer = BufferedWriter(PathWriter(target))
8888
writeEnumDataType(writer, it)
8989
writer.close()

src/test/kotlin/io/openapiprocessor/core/writer/java/ApiWriterSpec.kt

Lines changed: 37 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ package io.openapiprocessor.core.writer.java
88
import io.kotest.assertions.throwables.shouldNotThrowAny
99
import io.kotest.core.spec.IsolationMode
1010
import io.kotest.core.spec.style.StringSpec
11+
import io.kotest.data.blocking.forAll
12+
import io.kotest.data.row
1113
import io.kotest.matchers.shouldBe
1214
import io.mockk.every
1315
import io.mockk.verify
@@ -17,6 +19,7 @@ import io.openapiprocessor.core.model.Api
1719
import io.openapiprocessor.core.model.DataTypes
1820
import io.openapiprocessor.core.model.Interface
1921
import io.openapiprocessor.core.model.datatypes.*
22+
import io.openapiprocessor.core.model.datatypes.ObjectDataType as ObjectDataTypeP
2023
import io.openapiprocessor.core.support.datatypes.ObjectDataType
2124
import io.openapiprocessor.core.support.text
2225
import io.openapiprocessor.core.tempFolder
@@ -46,55 +49,25 @@ class ApiWriterSpec: StringSpec({
4649
}
4750

4851
"generates model enum source files in model target folder" {
49-
val enumWriter = stub<StringEnumWriter>()
50-
every { enumWriter.write(any(), any()) }
51-
.answers {
52-
firstArg<Writer>().write("Foo enum!\n")
53-
}
54-
.andThenAnswer {
55-
firstArg<Writer>().write("Bar enum!\n")
56-
}
57-
58-
val dts = DataTypes()
59-
dts.add(StringEnumDataType(DataTypeName("Foo"), "${options.packageName}.model"))
60-
dts.addRef("Foo")
61-
dts.add(StringEnumDataType(DataTypeName("Bar"), "${options.packageName}.model"))
62-
dts.addRef("Bar")
63-
val api = Api(dataTypes = dts)
64-
65-
// when:
66-
ApiWriter(options, stub(), stub(), enumWriter, false)
67-
.write(api)
68-
69-
// then:
70-
textOf("Foo.java") shouldBe "Foo enum!\n"
71-
textOf("Bar.java") shouldBe "Bar enum!\n"
72-
}
73-
74-
"generates model enum source files in model target folder with modified name" {
75-
val enumWriter = stub<StringEnumWriter>()
76-
every { enumWriter.write(any(), any()) }
77-
.answers {
78-
firstArg<Writer>().write("Foo enum!\n")
79-
}
80-
.andThenAnswer {
81-
firstArg<Writer>().write("Bar enum!\n")
82-
}
83-
84-
val dts = DataTypes()
85-
dts.add(StringEnumDataType(DataTypeName("Foo", "FooX"), "${options.packageName}.model"))
86-
dts.addRef("Foo")
87-
dts.add(StringEnumDataType(DataTypeName("Bar", "BarX"), "${options.packageName}.model"))
88-
dts.addRef("Bar")
89-
val api = Api(dataTypes = dts)
90-
91-
// when:
92-
ApiWriter(options, stub(), stub(), enumWriter, false)
93-
.write(api)
94-
95-
// then:
96-
textOf("Foo.java") shouldBe "Foo enum!\n"
97-
textOf("Bar.java") shouldBe "Bar enum!\n"
52+
forAll(row("Foo", "Foo"), row("Fooo", "FoooX")) { id, type ->
53+
val enumWriter = stub<StringEnumWriter>()
54+
every { enumWriter.write(any(), any()) }
55+
.answers {
56+
firstArg<Writer>().write("${arg<DataType>(1).getTypeName()} enum!\n")
57+
}
58+
59+
val dts = DataTypes()
60+
dts.add(StringEnumDataType(DataTypeName(id, type), "${options.packageName}.model"))
61+
dts.addRef(id)
62+
val api = Api(dataTypes = dts)
63+
64+
// when:
65+
ApiWriter(options, stub(), stub(), enumWriter, false)
66+
.write(api)
67+
68+
// then:
69+
textOf("$type.java") shouldBe "$type enum!\n"
70+
}
9871
}
9972

10073
"re-formats model enum source file" {
@@ -167,7 +140,6 @@ class ApiWriterSpec: StringSpec({
167140
textOfApi("BarApi.java") shouldBe "Bar interface!"
168141
}
169142

170-
171143
"generates interface with valid java class name" {
172144
val itfWriter = io.mockk.mockk<InterfaceWriter>()
173145
every { itfWriter.write(any(), any()) } answers {
@@ -187,28 +159,26 @@ class ApiWriterSpec: StringSpec({
187159
}
188160

189161
"generates model sources in model target folder" {
190-
val dtWriter = io.mockk.mockk<DataTypeWriter>()
191-
every { dtWriter.write(any(), any()) } answers {
192-
arg<Writer>(0).write("${arg<ObjectDataType>(1).getName()} class!")
193-
}
162+
forAll(row("Foo", "Foo"), row("Fooo", "FoooX")) { id, type ->
163+
val dtWriter = io.mockk.mockk<DataTypeWriter>()
164+
every { dtWriter.write(any(), any()) } answers {
165+
arg<Writer>(0).write("${arg<DataType>(1).getTypeName()} class!\n")
166+
}
194167

195-
val dt = DataTypes()
196-
dt.add(ObjectDataType("Foo", "${options.packageName}.model", linkedMapOf()))
197-
dt.addRef("Foo")
198-
dt.add(ObjectDataType("Bar", "${options.packageName}.model", linkedMapOf()))
199-
dt.addRef("Bar")
200-
val api = Api(dataTypes = dt)
168+
val dts = DataTypes()
169+
dts.add(ObjectDataTypeP(DataTypeName(id, type), "${options.packageName}.model"))
170+
dts.addRef(id)
171+
val api = Api(dataTypes = dts)
201172

202-
// when:
203-
ApiWriter(options, stub(), dtWriter, stub(), false)
204-
.write (api)
173+
// when:
174+
ApiWriter(options, stub(), dtWriter, stub(), false)
175+
.write(api)
205176

206-
// then:
207-
textOf("Foo.java") shouldBe "Foo class!"
208-
textOf("Bar.java") shouldBe "Bar class!"
177+
// then:
178+
textOf("$type.java") shouldBe "$type class!\n"
179+
}
209180
}
210181

211-
212182
"generates model for object data types only" {
213183
val dtWriter = io.mockk.mockk<DataTypeWriter>()
214184

0 commit comments

Comments
 (0)