4
4
import io .swagger .codegen .CodegenProperty ;
5
5
import io .swagger .codegen .DefaultCodegen ;
6
6
import io .swagger .codegen .languages .CSharpClientCodegen ;
7
+ import io .swagger .models .ArrayModel ;
7
8
import io .swagger .models .Model ;
8
9
import io .swagger .models .ModelImpl ;
10
+ import io .swagger .models .Path ;
11
+ import io .swagger .models .Swagger ;
9
12
import io .swagger .models .properties .ArrayProperty ;
13
+ import io .swagger .models .properties .DateTimeProperty ;
10
14
import io .swagger .models .properties .LongProperty ;
15
+ import io .swagger .models .properties .MapProperty ;
16
+ import io .swagger .models .properties .RefProperty ;
11
17
import io .swagger .models .properties .StringProperty ;
18
+ import io .swagger .parser .SwaggerParser ;
19
+
20
+ import com .google .common .collect .Sets ;
12
21
import org .testng .Assert ;
13
22
import org .testng .annotations .Test ;
14
23
24
+ import java .util .Map ;
25
+
15
26
@ SuppressWarnings ("static-method" )
16
27
public class CSharpModelTest {
17
28
@@ -96,4 +107,228 @@ private Model getArrayTestModel() {
96
107
.property ("examples" , new ArrayProperty ().items (new StringProperty ()))
97
108
.required ("id" );
98
109
}
99
- }
110
+
111
+ @ Test (description = "convert a simple model" )
112
+ public void simpleModelTest () {
113
+ final Model model = new ModelImpl ()
114
+ .description ("a sample model" )
115
+ .property ("id" , new LongProperty ())
116
+ .property ("name" , new StringProperty ())
117
+ .property ("createdAt" , new DateTimeProperty ())
118
+ .required ("id" )
119
+ .required ("name" );
120
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
121
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
122
+
123
+ Assert .assertEquals (cm .name , "sample" );
124
+ Assert .assertEquals (cm .classname , "Sample" );
125
+ Assert .assertEquals (cm .description , "a sample model" );
126
+ Assert .assertEquals (cm .vars .size (), 3 );
127
+
128
+ final CodegenProperty property1 = cm .vars .get (0 );
129
+ Assert .assertEquals (property1 .baseName , "id" );
130
+ Assert .assertEquals (property1 .datatype , "long?" );
131
+ Assert .assertEquals (property1 .name , "Id" );
132
+ Assert .assertNull (property1 .defaultValue );
133
+ Assert .assertEquals (property1 .baseType , "long?" );
134
+ Assert .assertTrue (property1 .hasMore );
135
+ Assert .assertTrue (property1 .required );
136
+ Assert .assertTrue (property1 .isPrimitiveType );
137
+ Assert .assertTrue (property1 .isNotContainer );
138
+
139
+ final CodegenProperty property2 = cm .vars .get (1 );
140
+ Assert .assertEquals (property2 .baseName , "name" );
141
+ Assert .assertEquals (property2 .datatype , "string" );
142
+ Assert .assertEquals (property2 .name , "Name" );
143
+ Assert .assertNull (property2 .defaultValue );
144
+ Assert .assertEquals (property2 .baseType , "string" );
145
+ Assert .assertTrue (property2 .hasMore );
146
+ Assert .assertTrue (property2 .required );
147
+ Assert .assertTrue (property2 .isPrimitiveType );
148
+ Assert .assertTrue (property2 .isNotContainer );
149
+
150
+ final CodegenProperty property3 = cm .vars .get (2 );
151
+ Assert .assertEquals (property3 .baseName , "createdAt" );
152
+ Assert .assertEquals (property3 .datatype , "DateTime?" );
153
+ Assert .assertEquals (property3 .name , "CreatedAt" );
154
+ Assert .assertNull (property3 .defaultValue );
155
+ Assert .assertEquals (property3 .baseType , "DateTime?" );
156
+ Assert .assertNull (property3 .hasMore );
157
+ Assert .assertNull (property3 .required );
158
+ Assert .assertTrue (property3 .isNotContainer );
159
+ }
160
+
161
+ @ Test (description = "convert a model with list property" )
162
+ public void listPropertyTest () {
163
+ final Model model = new ModelImpl ()
164
+ .description ("a sample model" )
165
+ .property ("id" , new LongProperty ())
166
+ .property ("urls" , new ArrayProperty ()
167
+ .items (new StringProperty ()))
168
+ .required ("id" );
169
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
170
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
171
+
172
+ Assert .assertEquals (cm .name , "sample" );
173
+ Assert .assertEquals (cm .classname , "Sample" );
174
+ Assert .assertEquals (cm .description , "a sample model" );
175
+ Assert .assertEquals (cm .vars .size (), 2 );
176
+
177
+ final CodegenProperty property1 = cm .vars .get (0 );
178
+ Assert .assertEquals (property1 .baseName , "id" );
179
+ Assert .assertEquals (property1 .datatype , "long?" );
180
+ Assert .assertEquals (property1 .name , "Id" );
181
+ Assert .assertNull (property1 .defaultValue );
182
+ Assert .assertEquals (property1 .baseType , "long?" );
183
+ Assert .assertTrue (property1 .hasMore );
184
+ Assert .assertTrue (property1 .required );
185
+ Assert .assertTrue (property1 .isPrimitiveType );
186
+ Assert .assertTrue (property1 .isNotContainer );
187
+
188
+ final CodegenProperty property2 = cm .vars .get (1 );
189
+ Assert .assertEquals (property2 .baseName , "urls" );
190
+ Assert .assertEquals (property2 .datatype , "List<string>" );
191
+ Assert .assertEquals (property2 .name , "Urls" );
192
+ Assert .assertNull (property2 .defaultValue );
193
+ Assert .assertEquals (property2 .baseType , "List" );
194
+ Assert .assertNull (property2 .hasMore );
195
+ Assert .assertEquals (property2 .containerType , "array" );
196
+ Assert .assertNull (property2 .required );
197
+ Assert .assertTrue (property2 .isPrimitiveType );
198
+ Assert .assertTrue (property2 .isContainer );
199
+ }
200
+
201
+ @ Test (description = "convert a model with a map property" )
202
+ public void mapPropertyTest () {
203
+ final Model model = new ModelImpl ()
204
+ .description ("a sample model" )
205
+ .property ("translations" , new MapProperty ()
206
+ .additionalProperties (new StringProperty ()))
207
+ .required ("id" );
208
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
209
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
210
+
211
+ Assert .assertEquals (cm .name , "sample" );
212
+ Assert .assertEquals (cm .classname , "Sample" );
213
+ Assert .assertEquals (cm .description , "a sample model" );
214
+ Assert .assertEquals (cm .vars .size (), 1 );
215
+
216
+ final CodegenProperty property1 = cm .vars .get (0 );
217
+ Assert .assertEquals (property1 .baseName , "translations" );
218
+ Assert .assertEquals (property1 .datatype , "Dictionary<string, string>" );
219
+ Assert .assertEquals (property1 .name , "Translations" );
220
+ Assert .assertEquals (property1 .baseType , "Dictionary" );
221
+ Assert .assertEquals (property1 .containerType , "map" );
222
+ Assert .assertNull (property1 .required );
223
+ Assert .assertTrue (property1 .isContainer );
224
+ Assert .assertTrue (property1 .isPrimitiveType );
225
+ }
226
+
227
+ @ Test (description = "convert a model with complex property" )
228
+ public void complexPropertyTest () {
229
+ final Model model = new ModelImpl ()
230
+ .description ("a sample model" )
231
+ .property ("children" , new RefProperty ("#/definitions/Children" ));
232
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
233
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
234
+
235
+ Assert .assertEquals (cm .name , "sample" );
236
+ Assert .assertEquals (cm .classname , "Sample" );
237
+ Assert .assertEquals (cm .description , "a sample model" );
238
+ Assert .assertEquals (cm .vars .size (), 1 );
239
+
240
+ final CodegenProperty property1 = cm .vars .get (0 );
241
+ Assert .assertEquals (property1 .baseName , "children" );
242
+ Assert .assertEquals (property1 .datatype , "Children" );
243
+ Assert .assertEquals (property1 .name , "Children" );
244
+ Assert .assertEquals (property1 .baseType , "Children" );
245
+ Assert .assertNull (property1 .required );
246
+ Assert .assertTrue (property1 .isNotContainer );
247
+ }
248
+
249
+ @ Test (description = "convert a model with complex list property" )
250
+ public void complexListPropertyTest () {
251
+ final Model model = new ModelImpl ()
252
+ .description ("a sample model" )
253
+ .property ("children" , new ArrayProperty ()
254
+ .items (new RefProperty ("#/definitions/Children" )));
255
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
256
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
257
+
258
+ Assert .assertEquals (cm .name , "sample" );
259
+ Assert .assertEquals (cm .classname , "Sample" );
260
+ Assert .assertEquals (cm .description , "a sample model" );
261
+ Assert .assertEquals (cm .vars .size (), 1 );
262
+
263
+ final CodegenProperty property1 = cm .vars .get (0 );
264
+ Assert .assertEquals (property1 .baseName , "children" );
265
+ Assert .assertEquals (property1 .complexType , "Children" );
266
+ Assert .assertEquals (property1 .datatype , "List<Children>" );
267
+ Assert .assertEquals (property1 .name , "Children" );
268
+ Assert .assertEquals (property1 .baseType , "List" );
269
+ Assert .assertEquals (property1 .containerType , "array" );
270
+ Assert .assertNull (property1 .required );
271
+ Assert .assertTrue (property1 .isContainer );
272
+ }
273
+
274
+ @ Test (description = "convert a model with complex map property" )
275
+ public void complexMapPropertyTest () {
276
+ final Model model = new ModelImpl ()
277
+ .description ("a sample model" )
278
+ .property ("children" , new MapProperty ()
279
+ .additionalProperties (new RefProperty ("#/definitions/Children" )));
280
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
281
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
282
+
283
+ Assert .assertEquals (cm .name , "sample" );
284
+ Assert .assertEquals (cm .classname , "Sample" );
285
+ Assert .assertEquals (cm .description , "a sample model" );
286
+ Assert .assertEquals (cm .vars .size (), 1 );
287
+ Assert .assertEquals (Sets .intersection (cm .imports , Sets .newHashSet ("Children" )).size (), 1 );
288
+
289
+ final CodegenProperty property1 = cm .vars .get (0 );
290
+ Assert .assertEquals (property1 .baseName , "children" );
291
+ Assert .assertEquals (property1 .complexType , "Children" );
292
+ Assert .assertEquals (property1 .datatype , "Dictionary<string, Children>" );
293
+ Assert .assertEquals (property1 .name , "Children" );
294
+ Assert .assertEquals (property1 .baseType , "Dictionary" );
295
+ Assert .assertEquals (property1 .containerType , "map" );
296
+ Assert .assertNull (property1 .required );
297
+ Assert .assertTrue (property1 .isContainer );
298
+ Assert .assertNull (property1 .isNotContainer );
299
+ }
300
+
301
+ @ Test (description = "convert an array model" )
302
+ public void arrayModelTest () {
303
+ final Model model = new ArrayModel ()
304
+ .description ("an array model" )
305
+ .items (new RefProperty ("#/definitions/Children" ));
306
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
307
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
308
+
309
+ Assert .assertEquals (cm .name , "sample" );
310
+ Assert .assertEquals (cm .classname , "Sample" );
311
+ Assert .assertEquals (cm .description , "an array model" );
312
+ Assert .assertEquals (cm .vars .size (), 0 );
313
+ Assert .assertEquals (cm .parent , "List<Children>" );
314
+ Assert .assertEquals (cm .imports .size (), 1 );
315
+ Assert .assertEquals (Sets .intersection (cm .imports , Sets .newHashSet ("Children" )).size (), 1 );
316
+ }
317
+
318
+ @ Test (description = "convert an map model" )
319
+ public void mapModelTest () {
320
+ final Model model = new ModelImpl ()
321
+ .description ("a map model" )
322
+ .additionalProperties (new RefProperty ("#/definitions/Children" ));
323
+ final DefaultCodegen codegen = new CSharpClientCodegen ();
324
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
325
+
326
+ Assert .assertEquals (cm .name , "sample" );
327
+ Assert .assertEquals (cm .classname , "Sample" );
328
+ Assert .assertEquals (cm .description , "a map model" );
329
+ Assert .assertEquals (cm .vars .size (), 0 );
330
+ Assert .assertEquals (cm .parent , "Dictionary<String, Children>" );
331
+ Assert .assertEquals (cm .imports .size (), 1 );
332
+ Assert .assertEquals (Sets .intersection (cm .imports , Sets .newHashSet ("Children" )).size (), 1 );
333
+ }
334
+ }
0 commit comments