From c79a557974c9b4c02fe865e102cafcaf1785075c Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Tue, 12 Nov 2019 18:17:53 -0800 Subject: [PATCH 1/2] Adds comment in java test where we need to check the fruit model --- .../org/openapitools/codegen/ruby/RubyClientCodegenTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java index b7bd1c69a51..64d5a8cba3d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java @@ -355,6 +355,7 @@ public class RubyClientCodegenTest { oneOf.add("Apple"); oneOf.add("Banana"); Assert.assertEquals(fruit.oneOf, oneOf); + // make sure that fruit has the property color } @Test(description = "test allOf (OAS3)") -- GitLab From bb6321b0550b3213e3c1ad74d59c3bda1daa5c34 Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Wed, 13 Nov 2019 10:23:11 -0800 Subject: [PATCH 2/2] Adds oneOf test to DefaultCodegenTest.java, adds code to include properties in composed schema --- .../openapitools/codegen/DefaultCodegen.java | 11 ++++++ .../codegen/DefaultCodegenTest.java | 35 +++++++++++++++++++ .../codegen/ruby/RubyClientCodegenTest.java | 1 - .../src/test/resources/3_0/oneOf.yaml | 3 ++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index f29243ef151..b442d2dc111 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -1787,6 +1787,17 @@ public class DefaultCodegen implements CodegenConfig { Map<String, Schema> allProperties = new LinkedHashMap<String, Schema>(); List<String> allRequired = new ArrayList<String>(); + // if schema has properties outside of allOf/oneOf/anyOf also add them to m + if (schema.getProperties() != null) { + addVars(m, unaliasPropertySchema(schema.getProperties()), schema.getRequired(), null, null); + } + + // uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved + // if schema has additionalproperties outside of allOf/oneOf/anyOf also add it to m + // if (schema.getAdditionalProperties() != null) { + // addAdditionPropertiesToCodeGenModel(m, schema); + // } + // parent model final String parentName = ModelUtils.getParentName(composed, allDefinitions); final List<String> allParents = ModelUtils.getAllParentsName(composed, allDefinitions); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 8914a7edfdb..1cecde08c42 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -268,6 +268,41 @@ public class DefaultCodegenTest { Assert.assertEquals(type, "oneOf<ObjA,ObjB>"); } + @Test + public void testComposedSchemaOneOfWithProperties() { + final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/oneOf.yaml"); + final DefaultCodegen codegen = new DefaultCodegen(); + + final Schema schema = openAPI.getComponents().getSchemas().get("fruit"); + codegen.setOpenAPI(openAPI); + CodegenModel fruit = codegen.fromModel("Fruit", schema); + + Set<String> oneOf = new TreeSet<String>(); + oneOf.add("Apple"); + oneOf.add("Banana"); + Assert.assertEquals(fruit.oneOf, oneOf); + Assert.assertEquals(fruit.optionalVars.size(), 3); + Assert.assertEquals(fruit.vars.size(), 3); + // make sure that fruit has the property color + boolean colorSeen = false; + for (CodegenProperty cp : fruit.vars) { + if (cp.name.equals("color")) { + colorSeen = true; + break; + } + } + Assert.assertTrue(colorSeen); + colorSeen = false; + for (CodegenProperty cp : fruit.optionalVars) { + if (cp.name.equals("color")) { + colorSeen = true; + break; + } + } + Assert.assertTrue(colorSeen); + } + + @Test public void testEscapeText() { final DefaultCodegen codegen = new DefaultCodegen(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java index 64d5a8cba3d..b7bd1c69a51 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java @@ -355,7 +355,6 @@ public class RubyClientCodegenTest { oneOf.add("Apple"); oneOf.add("Banana"); Assert.assertEquals(fruit.oneOf, oneOf); - // make sure that fruit has the property color } @Test(description = "test allOf (OAS3)") diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml index d98fcf6667a..b9f0938421e 100644 --- a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml @@ -22,6 +22,9 @@ components: oneOf: - $ref: '#/components/schemas/apple' - $ref: '#/components/schemas/banana' + # additionalProperties: + # type: string + # uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved apple: title: apple type: object -- GitLab