@@ -5540,4 +5540,61 @@ public void splitOperationsByContentTypeIsAGlobalOption() {
55405540 off .processOpts ();
55415541 assertThat (off .splitOperationsByContentType ).isFalse ();
55425542 }
5543+
5544+ @ Test
5545+ public void testGetEnumValueForPropertyWithNullAllowableValues () {
5546+ CodegenDiscriminator discriminator = new CodegenDiscriminator ();
5547+ discriminator .setIsEnum (true );
5548+ CodegenProperty var = new CodegenProperty ();
5549+ var .baseName = "type" ;
5550+ var .defaultValue = "defaultType" ;
5551+ var .allowableValues = null ;
5552+
5553+ String result = DefaultCodegen .getEnumValueForProperty ("TestModel" , discriminator , var );
5554+ assertEquals ("defaultType" , result );
5555+
5556+ Assertions .assertNull (DefaultCodegen .getEnumValueForProperty ("TestModel" , discriminator , null ));
5557+ assertEquals ("defaultType" , DefaultCodegen .getEnumValueForProperty ("TestModel" , null , var ));
5558+ }
5559+
5560+ @ Test
5561+ public void testSetEnumDiscriminatorDefaultValue () {
5562+ CodegenModel model = new CodegenModel ();
5563+ model .name = "TestModel" ;
5564+ model .schemaName = "TestModel" ;
5565+
5566+ CodegenDiscriminator discriminator = new CodegenDiscriminator ();
5567+ discriminator .setPropertyBaseName ("type" );
5568+ discriminator .setPropertyName ("type" );
5569+ discriminator .setIsEnum (true );
5570+ model .discriminator = discriminator ;
5571+
5572+ CodegenProperty var = new CodegenProperty ();
5573+ var .baseName = "type" ;
5574+ var .defaultValue = "defaultType" ;
5575+ var .allowableValues = null ;
5576+ model .vars .add (var );
5577+ model .allVars .add (var );
5578+
5579+ // 1. With mapping defined and null allowableValues:
5580+ // Verifies the discriminator matching path executes and assigns mapped value without NPE
5581+ discriminator .setMapping (Map .of ("CustomModel" , "TestModel" ));
5582+ DefaultCodegen .setEnumDiscriminatorDefaultValue (model );
5583+ assertEquals ("CustomModel" , var .defaultValue );
5584+
5585+ // 2. With allowableValues populated matching modelName:
5586+ // Verifies allowableValues matching path assigns the enum value
5587+ discriminator .setMapping (Collections .emptyMap ());
5588+ var .allowableValues = Map .of (EnumVarMap .ENUM_VALUES , List .of ("TestModel" ));
5589+ var .defaultValue = "defaultType" ;
5590+ DefaultCodegen .setEnumDiscriminatorDefaultValue (model );
5591+ assertEquals ("TestModel" , var .defaultValue );
5592+
5593+ // 3. With null allowableValues and no mapping match:
5594+ // Verifies fallback to defaultValue runs safely without NPE (issue #22177)
5595+ var .allowableValues = null ;
5596+ var .defaultValue = "defaultType" ;
5597+ DefaultCodegen .setEnumDiscriminatorDefaultValue (model );
5598+ assertEquals ("defaultType" , var .defaultValue );
5599+ }
55435600}
0 commit comments