2
2
3
3
import io .swagger .codegen .CodegenModel ;
4
4
import io .swagger .codegen .CodegenOperation ;
5
+ import io .swagger .codegen .CodegenProperty ;
5
6
import io .swagger .codegen .DefaultCodegen ;
6
7
import io .swagger .codegen .languages .PythonClientCodegen ;
8
+ import io .swagger .models .ArrayModel ;
9
+ import io .swagger .models .Model ;
10
+ import io .swagger .models .ModelImpl ;
7
11
import io .swagger .models .Operation ;
8
12
import io .swagger .models .Swagger ;
13
+ import io .swagger .models .properties .ArrayProperty ;
14
+ import io .swagger .models .properties .DateTimeProperty ;
15
+ import io .swagger .models .properties .LongProperty ;
16
+ import io .swagger .models .properties .MapProperty ;
17
+ import io .swagger .models .properties .RefProperty ;
18
+ import io .swagger .models .properties .StringProperty ;
9
19
import io .swagger .parser .SwaggerParser ;
10
20
11
21
import org .testng .Assert ;
12
22
import org .testng .annotations .Test ;
23
+ import org .testng .annotations .ITestAnnotation ;
24
+
25
+ import com .google .common .collect .Sets ;
26
+ import java .util .Map ;
13
27
14
28
@ SuppressWarnings ("static-method" )
15
29
public class PythonTest {
@@ -35,4 +49,232 @@ public void modelTest() {
35
49
Assert .assertEquals (codegenOperation .returnType , "V1beta3Binding" );
36
50
Assert .assertEquals (codegenOperation .returnBaseType , "V1beta3Binding" );
37
51
}
52
+
53
+ @ Test (description = "convert a simple java model" )
54
+ public void simpleModelTest () {
55
+ final Model model = new ModelImpl ()
56
+ .description ("a sample model" )
57
+ .property ("id" , new LongProperty ())
58
+ .property ("name" , new StringProperty ())
59
+ .property ("createdAt" , new DateTimeProperty ())
60
+ .required ("id" )
61
+ .required ("name" );
62
+ final DefaultCodegen codegen = new PythonClientCodegen ();
63
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
64
+
65
+ Assert .assertEquals (cm .name , "sample" );
66
+ Assert .assertEquals (cm .classname , "Sample" );
67
+ Assert .assertEquals (cm .description , "a sample model" );
68
+ Assert .assertEquals (cm .vars .size (), 3 );
69
+
70
+ final CodegenProperty property1 = cm .vars .get (0 );
71
+ Assert .assertEquals (property1 .baseName , "id" );
72
+ Assert .assertEquals (property1 .datatype , "int" );
73
+ Assert .assertEquals (property1 .name , "id" );
74
+ Assert .assertNull (property1 .defaultValue );
75
+ Assert .assertEquals (property1 .baseType , "int" );
76
+ Assert .assertTrue (property1 .hasMore );
77
+ Assert .assertTrue (property1 .required );
78
+ Assert .assertTrue (property1 .isPrimitiveType );
79
+ Assert .assertTrue (property1 .isNotContainer );
80
+
81
+ final CodegenProperty property2 = cm .vars .get (1 );
82
+ Assert .assertEquals (property2 .baseName , "name" );
83
+ Assert .assertEquals (property2 .datatype , "str" );
84
+ Assert .assertEquals (property2 .name , "name" );
85
+ Assert .assertNull (property2 .defaultValue );
86
+ Assert .assertEquals (property2 .baseType , "str" );
87
+ Assert .assertTrue (property2 .hasMore );
88
+ Assert .assertTrue (property2 .required );
89
+ Assert .assertTrue (property2 .isPrimitiveType );
90
+ Assert .assertTrue (property2 .isNotContainer );
91
+
92
+ final CodegenProperty property3 = cm .vars .get (2 );
93
+ Assert .assertEquals (property3 .baseName , "createdAt" );
94
+ Assert .assertEquals (property3 .datatype , "datetime" );
95
+ Assert .assertEquals (property3 .name , "created_at" );
96
+ Assert .assertNull (property3 .defaultValue );
97
+ Assert .assertEquals (property3 .baseType , "datetime" );
98
+ Assert .assertNull (property3 .hasMore );
99
+ Assert .assertNull (property3 .required );
100
+ Assert .assertTrue (property3 .isNotContainer );
101
+ }
102
+
103
+ @ Test (description = "convert a model with list property" )
104
+ public void listPropertyTest () {
105
+ final Model model = new ModelImpl ()
106
+ .description ("a sample model" )
107
+ .property ("id" , new LongProperty ())
108
+ .property ("urls" , new ArrayProperty ()
109
+ .items (new StringProperty ()))
110
+ .required ("id" );
111
+ final DefaultCodegen codegen = new PythonClientCodegen ();
112
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
113
+
114
+ Assert .assertEquals (cm .name , "sample" );
115
+ Assert .assertEquals (cm .classname , "Sample" );
116
+ Assert .assertEquals (cm .description , "a sample model" );
117
+ Assert .assertEquals (cm .vars .size (), 2 );
118
+
119
+ final CodegenProperty property1 = cm .vars .get (0 );
120
+ Assert .assertEquals (property1 .baseName , "id" );
121
+ Assert .assertEquals (property1 .datatype , "int" );
122
+ Assert .assertEquals (property1 .name , "id" );
123
+ Assert .assertNull (property1 .defaultValue );
124
+ Assert .assertEquals (property1 .baseType , "int" );
125
+ Assert .assertTrue (property1 .hasMore );
126
+ Assert .assertTrue (property1 .required );
127
+ Assert .assertTrue (property1 .isPrimitiveType );
128
+ Assert .assertTrue (property1 .isNotContainer );
129
+
130
+ final CodegenProperty property2 = cm .vars .get (1 );
131
+ Assert .assertEquals (property2 .baseName , "urls" );
132
+ Assert .assertEquals (property2 .datatype , "list[str]" );
133
+ Assert .assertEquals (property2 .name , "urls" );
134
+ Assert .assertNull (property2 .defaultValue );
135
+ Assert .assertEquals (property2 .baseType , "list" );
136
+ Assert .assertNull (property2 .hasMore );
137
+ Assert .assertEquals (property2 .containerType , "array" );
138
+ Assert .assertNull (property2 .required );
139
+ Assert .assertTrue (property2 .isPrimitiveType );
140
+ Assert .assertTrue (property2 .isContainer );
141
+ }
142
+
143
+ @ Test (description = "convert a model with a map property" )
144
+ public void mapPropertyTest () {
145
+ final Model model = new ModelImpl ()
146
+ .description ("a sample model" )
147
+ .property ("translations" , new MapProperty ()
148
+ .additionalProperties (new StringProperty ()))
149
+ .required ("id" );
150
+ final DefaultCodegen codegen = new PythonClientCodegen ();
151
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
152
+
153
+ Assert .assertEquals (cm .name , "sample" );
154
+ Assert .assertEquals (cm .classname , "Sample" );
155
+ Assert .assertEquals (cm .description , "a sample model" );
156
+ Assert .assertEquals (cm .vars .size (), 1 );
157
+
158
+ final CodegenProperty property1 = cm .vars .get (0 );
159
+ Assert .assertEquals (property1 .baseName , "translations" );
160
+ Assert .assertEquals (property1 .datatype , "dict(str, str)" );
161
+ Assert .assertEquals (property1 .name , "translations" );
162
+ Assert .assertEquals (property1 .baseType , "dict" );
163
+ Assert .assertEquals (property1 .containerType , "map" );
164
+ Assert .assertNull (property1 .required );
165
+ Assert .assertTrue (property1 .isContainer );
166
+ Assert .assertTrue (property1 .isPrimitiveType );
167
+ }
168
+
169
+ @ Test (description = "convert a model with complex property" )
170
+ public void complexPropertyTest () {
171
+ final Model model = new ModelImpl ()
172
+ .description ("a sample model" )
173
+ .property ("children" , new RefProperty ("#/definitions/Children" ));
174
+ final DefaultCodegen codegen = new PythonClientCodegen ();
175
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
176
+
177
+ Assert .assertEquals (cm .name , "sample" );
178
+ Assert .assertEquals (cm .classname , "Sample" );
179
+ Assert .assertEquals (cm .description , "a sample model" );
180
+ Assert .assertEquals (cm .vars .size (), 1 );
181
+
182
+ final CodegenProperty property1 = cm .vars .get (0 );
183
+ Assert .assertEquals (property1 .baseName , "children" );
184
+ Assert .assertEquals (property1 .datatype , "Children" );
185
+ Assert .assertEquals (property1 .name , "children" );
186
+ Assert .assertEquals (property1 .baseType , "Children" );
187
+ Assert .assertNull (property1 .required );
188
+ Assert .assertTrue (property1 .isNotContainer );
189
+ }
190
+
191
+ @ Test (description = "convert a model with complex list property" )
192
+ public void complexListPropertyTest () {
193
+ final Model model = new ModelImpl ()
194
+ .description ("a sample model" )
195
+ .property ("children" , new ArrayProperty ()
196
+ .items (new RefProperty ("#/definitions/Children" )));
197
+ final DefaultCodegen codegen = new PythonClientCodegen ();
198
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
199
+
200
+ Assert .assertEquals (cm .name , "sample" );
201
+ Assert .assertEquals (cm .classname , "Sample" );
202
+ Assert .assertEquals (cm .description , "a sample model" );
203
+ Assert .assertEquals (cm .vars .size (), 1 );
204
+
205
+ final CodegenProperty property1 = cm .vars .get (0 );
206
+ Assert .assertEquals (property1 .baseName , "children" );
207
+ Assert .assertEquals (property1 .complexType , "Children" );
208
+ Assert .assertEquals (property1 .datatype , "list[Children]" );
209
+ Assert .assertEquals (property1 .name , "children" );
210
+ Assert .assertEquals (property1 .baseType , "list" );
211
+ Assert .assertEquals (property1 .containerType , "array" );
212
+ Assert .assertNull (property1 .required );
213
+ Assert .assertTrue (property1 .isContainer );
214
+ }
215
+
216
+ @ Test (description = "convert a model with complex map property" )
217
+ public void complexMapPropertyTest () {
218
+ final Model model = new ModelImpl ()
219
+ .description ("a sample model" )
220
+ .property ("children" , new MapProperty ()
221
+ .additionalProperties (new RefProperty ("#/definitions/Children" )));
222
+ final DefaultCodegen codegen = new PythonClientCodegen ();
223
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
224
+
225
+ Assert .assertEquals (cm .name , "sample" );
226
+ Assert .assertEquals (cm .classname , "Sample" );
227
+ Assert .assertEquals (cm .description , "a sample model" );
228
+ Assert .assertEquals (cm .vars .size (), 1 );
229
+ Assert .assertEquals (Sets .intersection (cm .imports , Sets .newHashSet ("Children" )).size (), 1 );
230
+
231
+ final CodegenProperty property1 = cm .vars .get (0 );
232
+ Assert .assertEquals (property1 .baseName , "children" );
233
+ Assert .assertEquals (property1 .complexType , "Children" );
234
+ Assert .assertEquals (property1 .datatype , "dict(str, Children)" );
235
+ Assert .assertEquals (property1 .name , "children" );
236
+ Assert .assertEquals (property1 .baseType , "dict" );
237
+ Assert .assertEquals (property1 .containerType , "map" );
238
+ Assert .assertNull (property1 .required );
239
+ Assert .assertTrue (property1 .isContainer );
240
+ Assert .assertNull (property1 .isNotContainer );
241
+ }
242
+
243
+
244
+ // should not start with 'null'. need help from the community to investigate further
245
+ @ Test (enabled = false , description = "convert an array model" )
246
+ public void arrayModelTest () {
247
+ final Model model = new ArrayModel ()
248
+ .description ("an array model" )
249
+ .items (new RefProperty ("#/definitions/Children" ));
250
+ final DefaultCodegen codegen = new PythonClientCodegen ();
251
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
252
+
253
+ Assert .assertEquals (cm .name , "sample" );
254
+ Assert .assertEquals (cm .classname , "Sample" );
255
+ Assert .assertEquals (cm .description , "an array model" );
256
+ Assert .assertEquals (cm .vars .size (), 0 );
257
+ Assert .assertEquals (cm .parent , "null<Children>" );
258
+ Assert .assertEquals (cm .imports .size (), 1 );
259
+ Assert .assertEquals (Sets .intersection (cm .imports , Sets .newHashSet ("Children" )).size (), 1 );
260
+ }
261
+
262
+ // should not start with 'null'. need help from the community to investigate further
263
+ @ Test (enabled = false , description = "convert an map model" )
264
+ public void mapModelTest () {
265
+ final Model model = new ModelImpl ()
266
+ .description ("a map model" )
267
+ .additionalProperties (new RefProperty ("#/definitions/Children" ));
268
+ final DefaultCodegen codegen = new PythonClientCodegen ();
269
+ final CodegenModel cm = codegen .fromModel ("sample" , model );
270
+
271
+ Assert .assertEquals (cm .name , "sample" );
272
+ Assert .assertEquals (cm .classname , "Sample" );
273
+ Assert .assertEquals (cm .description , "a map model" );
274
+ Assert .assertEquals (cm .vars .size (), 0 );
275
+ Assert .assertEquals (cm .parent , "null<String, Children>" );
276
+ Assert .assertEquals (cm .imports .size (), 2 ); // TODO: need to verify
277
+ Assert .assertEquals (Sets .intersection (cm .imports , Sets .newHashSet ("Children" )).size (), 1 );
278
+ }
279
+
38
280
}
0 commit comments