@@ -8,6 +8,8 @@ package io.openapiprocessor.core.writer.java
8
8
import io.kotest.assertions.throwables.shouldNotThrowAny
9
9
import io.kotest.core.spec.IsolationMode
10
10
import io.kotest.core.spec.style.StringSpec
11
+ import io.kotest.data.blocking.forAll
12
+ import io.kotest.data.row
11
13
import io.kotest.matchers.shouldBe
12
14
import io.mockk.every
13
15
import io.mockk.verify
@@ -17,6 +19,7 @@ import io.openapiprocessor.core.model.Api
17
19
import io.openapiprocessor.core.model.DataTypes
18
20
import io.openapiprocessor.core.model.Interface
19
21
import io.openapiprocessor.core.model.datatypes.*
22
+ import io.openapiprocessor.core.model.datatypes.ObjectDataType as ObjectDataTypeP
20
23
import io.openapiprocessor.core.support.datatypes.ObjectDataType
21
24
import io.openapiprocessor.core.support.text
22
25
import io.openapiprocessor.core.tempFolder
@@ -46,55 +49,25 @@ class ApiWriterSpec: StringSpec({
46
49
}
47
50
48
51
" 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
+ }
98
71
}
99
72
100
73
" re-formats model enum source file" {
@@ -167,7 +140,6 @@ class ApiWriterSpec: StringSpec({
167
140
textOfApi("BarApi .java") shouldBe " Bar interface!"
168
141
}
169
142
170
-
171
143
" generates interface with valid java class name" {
172
144
val itfWriter = io.mockk.mockk<InterfaceWriter >()
173
145
every { itfWriter.write(any(), any()) } answers {
@@ -187,28 +159,26 @@ class ApiWriterSpec: StringSpec({
187
159
}
188
160
189
161
" 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
+ }
194
167
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)
201
172
202
- // when:
203
- ApiWriter (options, stub(), dtWriter, stub(), false)
204
- .write (api)
173
+ // when:
174
+ ApiWriter (options, stub(), dtWriter, stub(), false)
175
+ .write(api)
205
176
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
+ }
209
180
}
210
181
211
-
212
182
" generates model for object data types only" {
213
183
val dtWriter = io.mockk.mockk<DataTypeWriter >()
214
184
0 commit comments