@@ -306,6 +306,66 @@ public void updateCodegenPropertyEnum() {
306306 Assert .assertEquals (testedEnumVar .getOrDefault ("isString" , "" ), false );
307307 }
308308
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+
309369 @ Test
310370 public void testExample1 () {
311371 final OpenAPI openAPI = new OpenAPIParser ().readLocation ("src/test/resources/3_0/examples.yaml" , null , new ParseOptions ()).getOpenAPI ();
@@ -478,4 +538,30 @@ private CodegenProperty codegenPropertyWithArrayOfIntegerValues() {
478538 array .dataType = "Array" ;
479539 return array ;
480540 }
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+ }
481567}
0 commit comments