@@ -306,6 +306,66 @@ public void updateCodegenPropertyEnum() {
306
306
Assert .assertEquals (testedEnumVar .getOrDefault ("isString" , "" ), false );
307
307
}
308
308
309
+ @ Test
310
+ public void updateCodegenPropertyEnumWithExtention () {
311
+ {
312
+ CodegenProperty enumProperty = codegenPropertyWithXEnumVarName (Arrays .asList ("dog" , "cat" ), Arrays .asList ("DOGVAR" , "CATVAR" ));
313
+ (new DefaultCodegen ()).updateCodegenPropertyEnum (enumProperty );
314
+ List <Map <String , Object >> enumVars = (List <Map <String , Object >>) enumProperty .getAllowableValues ().get ("enumVars" );
315
+ Assert .assertNotNull (enumVars );
316
+ Assert .assertNotNull (enumVars .get (0 ));
317
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("name" , "" ), "DOGVAR" );
318
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("value" , "" ), "\" dog\" " );
319
+ Assert .assertNotNull (enumVars .get (1 ));
320
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("name" , "" ), "CATVAR" );
321
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("value" , "" ), "\" cat\" " );
322
+ }
323
+ {
324
+ CodegenProperty enumProperty = codegenPropertyWithXEnumVarName (Arrays .asList ("1" , "2" ), Arrays .asList ("ONE" , "TWO" ));
325
+ (new DefaultCodegen ()).updateCodegenPropertyEnum (enumProperty );
326
+ List <Map <String , Object >> enumVars = (List <Map <String , Object >>) enumProperty .getAllowableValues ().get ("enumVars" );
327
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("name" , "" ), "ONE" );
328
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("value" , "" ), "\" 1\" " );
329
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("name" , "" ), "TWO" );
330
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("value" , "" ), "\" 2\" " );
331
+ }
332
+ {
333
+ CodegenProperty enumProperty = codegenPropertyWithXEnumVarName (Arrays .asList ("a" , "b" , "c" , "d" ), Arrays .asList ("FOO" , "BAR" ));
334
+ (new DefaultCodegen ()).updateCodegenPropertyEnum (enumProperty );
335
+ List <Map <String , Object >> enumVars = (List <Map <String , Object >>) enumProperty .getAllowableValues ().get ("enumVars" );
336
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("name" , "" ), "FOO" );
337
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("name" , "" ), "BAR" );
338
+ Assert .assertEquals (enumVars .get (2 ).getOrDefault ("name" , "" ), "C" );
339
+ Assert .assertEquals (enumVars .get (3 ).getOrDefault ("name" , "" ), "D" );
340
+ }
341
+ {
342
+ CodegenProperty enumProperty = codegenPropertyWithXEnumVarName (Arrays .asList ("a" , "b" ), Arrays .asList ("FOO" , "BAR" , "BAZ" ));
343
+ (new DefaultCodegen ()).updateCodegenPropertyEnum (enumProperty );
344
+ List <Map <String , Object >> enumVars = (List <Map <String , Object >>) enumProperty .getAllowableValues ().get ("enumVars" );
345
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("name" , "" ), "FOO" );
346
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("name" , "" ), "BAR" );
347
+ Assert .assertEquals (enumVars .size (), 2 );
348
+ }
349
+ }
350
+
351
+ @ Test
352
+ public void postProcessModelsEnumWithExtention () {
353
+ final DefaultCodegen codegen = new DefaultCodegen ();
354
+ Map <String , Object > objs = codegenModelWithXEnumVarName ();
355
+ CodegenModel cm = (CodegenModel ) ((Map <String , Object >) ((List <Object >) objs .get ("models" )).get (0 )).get ("model" );
356
+
357
+ codegen .postProcessModelsEnum (objs );
358
+
359
+ List <Map <String , Object >> enumVars = (List <Map <String , Object >>) cm .getAllowableValues ().get ("enumVars" );
360
+ Assert .assertNotNull (enumVars );
361
+ Assert .assertNotNull (enumVars .get (0 ));
362
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("name" , "" ), "DOGVAR" );
363
+ Assert .assertEquals (enumVars .get (0 ).getOrDefault ("value" , "" ), "\" dog\" " );
364
+ Assert .assertNotNull (enumVars .get (1 ));
365
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("name" , "" ), "CATVAR" );
366
+ Assert .assertEquals (enumVars .get (1 ).getOrDefault ("value" , "" ), "\" cat\" " );
367
+ }
368
+
309
369
@ Test
310
370
public void testExample1 () {
311
371
final OpenAPI openAPI = new OpenAPIParser ().readLocation ("src/test/resources/3_0/examples.yaml" , null , new ParseOptions ()).getOpenAPI ();
@@ -478,4 +538,30 @@ private CodegenProperty codegenPropertyWithArrayOfIntegerValues() {
478
538
array .dataType = "Array" ;
479
539
return array ;
480
540
}
541
+
542
+ private CodegenProperty codegenPropertyWithXEnumVarName (List <String > values , List <String > aliases ) {
543
+ final CodegenProperty var = new CodegenProperty ();
544
+ final HashMap <String , Object > allowableValues = new HashMap <>();
545
+ allowableValues .put ("values" , values );
546
+ var .setAllowableValues (allowableValues );
547
+ var .dataType = "String" ;
548
+ Map <String , Object > extentions = Collections .singletonMap ("x-enum-varnames" , aliases );
549
+ var .setVendorExtensions (extentions );
550
+ return var ;
551
+ }
552
+
553
+ private Map <String , Object > codegenModelWithXEnumVarName () {
554
+ final CodegenModel cm = new CodegenModel ();
555
+ cm .isEnum = true ;
556
+ final HashMap <String , Object > allowableValues = new HashMap <>();
557
+ allowableValues .put ("values" , Arrays .asList ("dog" , "cat" ));
558
+ cm .setAllowableValues (allowableValues );
559
+ cm .dataType = "String" ;
560
+ final List <String > aliases = Arrays .asList ("DOGVAR" , "CATVAR" );
561
+ Map <String , Object > extentions = Collections .singletonMap ("x-enum-varnames" , aliases );
562
+ cm .setVendorExtensions (extentions );
563
+ cm .setVars (Collections .emptyList ());
564
+ Map <String , Object > objs = Collections .singletonMap ("models" , Collections .singletonList (Collections .singletonMap ("model" , cm )));
565
+ return objs ;
566
+ }
481
567
}
0 commit comments