fix: Add prefix and suffix to discriminator (#16684)

Use the existing toModelName method to normalize the discriminator

Co-authored-by: Matthias Gabriel <mga@rockstar.jobs>
This commit is contained in:
Matthias Gabriel 2023-10-03 12:46:56 +02:00 committed by GitHub
parent baf33f0537
commit 4075a52dce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -3585,6 +3585,7 @@ public class DefaultCodegen implements CodegenConfig {
.map(p -> (Schema<?>) p.get(discriminatorPropertyName))
.map(Schema::get$ref)
.map(ModelUtils::getSimpleRef)
.map(this::toModelName)
.orElseGet(() -> typeMapping.get("string"));
discriminator.setPropertyType(propertyType);

View File

@ -1529,6 +1529,25 @@ public class DefaultCodegenTest {
Assert.assertEquals(cm.discriminator.getMappedModels(), hs);
}
@Test
public void testComposedSchemaOneOfDiscriminatorMapPreAndPostFix() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOfDiscriminator.yaml");
DefaultCodegen codegen = new DefaultCodegen();
codegen.setLegacyDiscriminatorBehavior(false);
codegen.setOpenAPI(openAPI);
codegen.setModelNamePrefix("Transfer");
codegen.setModelNameSuffix("Dto");
String modelName;
Schema sc;
CodegenModel cm;
// ref oneOf models with enum property discriminator
modelName = "FruitOneOfEnumMappingDisc";
sc = openAPI.getComponents().getSchemas().get(modelName);
cm = codegen.fromModel(modelName, sc);
assertThat(cm.discriminator.getPropertyType()).isEqualTo("TransferFruitTypeEnumDto");
}
@Test
public void testComposedSchemaMyPetsOneOfDiscriminatorMap() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/allOf_composition_discriminator.yaml");