@@ -8,6 +8,7 @@ package io.openapiprocessor.core.processor.mapping.v2
8
8
import io.kotest.core.spec.IsolationMode
9
9
import io.kotest.core.spec.style.StringSpec
10
10
import io.kotest.matchers.shouldBe
11
+ import io.openapiprocessor.core.converter.mapping.ParameterTypeMapping
11
12
import io.openapiprocessor.core.converter.mapping.TypeMapping
12
13
import io.openapiprocessor.core.processor.MappingConverter
13
14
import io.openapiprocessor.core.processor.MappingReader
@@ -24,7 +25,7 @@ class MappingConverterGenericsSpec: StringSpec({
24
25
|
25
26
|options:
26
27
| package-name: generated
27
- |
28
+ |
28
29
|map:
29
30
| types:
30
31
| - type: Foo => java.util.Map<java.lang.String, java.lang.String>
@@ -48,7 +49,7 @@ class MappingConverterGenericsSpec: StringSpec({
48
49
|
49
50
|options:
50
51
| package-name: generated
51
- |
52
+ |
52
53
|map:
53
54
| types:
54
55
| - type: Foo => java.util.Map
@@ -99,7 +100,7 @@ class MappingConverterGenericsSpec: StringSpec({
99
100
|
100
101
|options:
101
102
| package-name: generated
102
- |
103
+ |
103
104
|map:
104
105
| types:
105
106
| - type: Foo => java.util.Map<java.lang.String, java.util.Collection<java.lang.String>>
@@ -126,7 +127,7 @@ class MappingConverterGenericsSpec: StringSpec({
126
127
|
127
128
|options:
128
129
| package-name: generated
129
- |
130
+ |
130
131
|map:
131
132
| types:
132
133
| - type: Foo => java.util.Map
@@ -149,4 +150,62 @@ class MappingConverterGenericsSpec: StringSpec({
149
150
coll.typeName shouldBe " java.util.Collection"
150
151
coll.genericTypes[0 ].typeName shouldBe " generated.String"
151
152
}
153
+
154
+ " read parameter with generic parameters" {
155
+ val yaml = """
156
+ |openapi-processor-mapping: v2
157
+ |
158
+ |options:
159
+ | package-name: generated
160
+ |
161
+ |map:
162
+ | parameters:
163
+ | - name: foo => java.util.Map<java.lang.String, java.lang.String>
164
+ """ .trimMargin()
165
+
166
+ // when:
167
+ val mapping = reader.read (yaml)
168
+ val mappings = converter.convert (mapping)
169
+
170
+ // then:
171
+ val type = mappings.first() as ParameterTypeMapping
172
+ type.parameterName shouldBe " foo"
173
+ val tm = type.mapping
174
+ tm.targetTypeName shouldBe " java.util.Map"
175
+ tm.genericTypes.size shouldBe 2
176
+ tm.genericTypes[0 ].typeName shouldBe " java.lang.String"
177
+ tm.genericTypes[1 ].typeName shouldBe " java.lang.String"
178
+ }
179
+
180
+ " read parameter with nested generic parameters & package ref" {
181
+ val yaml = """
182
+ |openapi-processor-mapping: v2
183
+ |
184
+ |options:
185
+ | package-name: generated
186
+ |
187
+ |map:
188
+ | parameters:
189
+ | - name: foo => java.util.Map
190
+ | generics:
191
+ | - java.lang.String
192
+ | - java.util.Collection<{package-name}.String>
193
+ """ .trimMargin()
194
+
195
+ // when:
196
+ val mapping = reader.read (yaml)
197
+ val mappings = converter.convert (mapping)
198
+
199
+ // then:
200
+ val type = mappings.first() as ParameterTypeMapping
201
+ type.parameterName shouldBe " foo"
202
+ val tm = type.mapping
203
+ tm.targetTypeName shouldBe " java.util.Map"
204
+ tm.genericTypes.size shouldBe 2
205
+ tm.genericTypes[0 ].typeName shouldBe " java.lang.String"
206
+
207
+ val coll = tm.genericTypes[1 ]
208
+ coll.typeName shouldBe " java.util.Collection"
209
+ coll.genericTypes[0 ].typeName shouldBe " generated.String"
210
+ }
152
211
})
0 commit comments