4040import org .openapitools .codegen .java .assertions .JavaFileAssert ;
4141import org .openapitools .codegen .languages .AbstractJavaCodegen ;
4242import org .openapitools .codegen .languages .JavaClientCodegen ;
43+ import org .openapitools .codegen .languages .RubyClientCodegen ;
4344import org .openapitools .codegen .languages .features .BeanValidationFeatures ;
4445import org .openapitools .codegen .languages .features .CXFServerFeatures ;
4546import org .openapitools .codegen .meta .features .SecurityFeature ;
4647import org .openapitools .codegen .model .OperationMap ;
4748import org .openapitools .codegen .model .OperationsMap ;
4849import org .openapitools .codegen .testutils .ConfigAssert ;
50+ import org .testng .Assert ;
4951import org .testng .annotations .DataProvider ;
5052import org .testng .annotations .Parameters ;
5153import org .testng .annotations .Test ;
6769import static org .assertj .core .api .Assertions .assertThat ;
6870import static org .assertj .core .api .Assertions .entry ;
6971import static org .assertj .core .api .InstanceOfAssertFactories .FILE ;
72+ import static org .junit .jupiter .api .Assertions .assertEquals ;
73+ import static org .junit .jupiter .api .Assertions .assertTrue ;
7074import static org .openapitools .codegen .CodegenConstants .*;
7175import static org .openapitools .codegen .TestUtils .*;
7276import static org .openapitools .codegen .languages .JavaClientCodegen .*;
@@ -3837,4 +3841,49 @@ public void queryParameterJsonSerialization(String library) {
38373841 public static Object [] springClients () {
38383842 return new Object []{RESTCLIENT , WEBCLIENT };
38393843 }
3844+
3845+ @ Test (description = "test oneOf (OAS3)" )
3846+ public void oneOfTest () {
3847+ final OpenAPI openAPI = TestUtils .parseFlattenSpec ("src/test/resources/3_0/oneOf.yaml" );
3848+ final JavaClientCodegen codegen = new JavaClientCodegen ();
3849+
3850+ final Schema schema = openAPI .getComponents ().getSchemas ().get ("fruit" );
3851+ codegen .setOpenAPI (openAPI );
3852+ CodegenModel fruit = codegen .fromModel ("Fruit" , schema );
3853+
3854+ Set <String > oneOf = new TreeSet <String >();
3855+ oneOf .add ("Apple" );
3856+ oneOf .add ("Banana" );
3857+ oneOf .add ("Orange" );
3858+ Assert .assertEquals (fruit .oneOf , oneOf );
3859+
3860+ assertEquals (4 , fruit .optionalVars .size ());
3861+ assertEquals (4 , fruit .vars .size ());
3862+ }
3863+
3864+ @ Test
3865+ public void oneOfInheritanceArrayFieldTest () {
3866+ final OpenAPI openAPI = TestUtils .parseFlattenSpec ("src/test/resources/3_0/oneOf_inheritance.yaml" );
3867+ final JavaClientCodegen codegen = new JavaClientCodegen ();
3868+
3869+ final Schema schema = openAPI .getComponents ().getSchemas ().get ("RandomAnimalsResponse_animals_inner" );
3870+ codegen .setOpenAPI (openAPI );
3871+ CodegenModel randomAnimalsResponseInner = codegen .fromModel ("RandomAnimalsResponse_animals_inner" , schema );
3872+
3873+ Set <String > oneOf = new TreeSet <>();
3874+ oneOf .add ("Mouse" );
3875+ oneOf .add ("Cat" );
3876+ oneOf .add ("Dog" );
3877+ assertEquals (oneOf , randomAnimalsResponseInner .oneOf );
3878+ assertEquals (4 , randomAnimalsResponseInner .vars .size ());
3879+ // make sure that RandomAnimalsResponseInner has the property species
3880+ boolean speciesSeen = false ;
3881+ for (CodegenProperty cp : randomAnimalsResponseInner .vars ) {
3882+ if ("species" .equals (cp .name )) {
3883+ speciesSeen = true ;
3884+ break ;
3885+ }
3886+ }
3887+ assertTrue (speciesSeen );
3888+ }
38403889}
0 commit comments