diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java index 49641701f62..dc815e351aa 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java @@ -252,7 +252,7 @@ public class JavaModelTest { Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); Assert.assertEquals(cm.vars.size(), 1); - Assert.assertEquals(Sets.union(cm.imports, Sets.newHashSet("Map", "List", "Children")).size(), 3); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Map", "List", "Children")).size(), 3); final CodegenProperty property = cm.vars.get(0); Assert.assertEquals(property.baseName, "children"); @@ -284,7 +284,7 @@ public class JavaModelTest { Assert.assertEquals(cm.vars.size(), 0); Assert.assertEquals(cm.parent, "ArrayList"); Assert.assertEquals(cm.imports.size(), 3); - Assert.assertEquals(Sets.union(cm.imports, Sets.newHashSet("List", "ArrayList", "Children")).size(), 3); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("List", "ArrayList", "Children")).size(), 3); } @Test(description = "convert an map model") @@ -301,7 +301,7 @@ public class JavaModelTest { Assert.assertEquals(cm.vars.size(), 0); Assert.assertEquals(cm.parent, "HashMap"); Assert.assertEquals(cm.imports.size(), 3); - Assert.assertEquals(Sets.union(cm.imports, Sets.newHashSet("Map", "HashMap", "Children")).size(), 3); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Map", "HashMap", "Children")).size(), 3); } @Test(description = "convert a model with upper-case property names") diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/objc/ObjcModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/objc/ObjcModelTest.java new file mode 100644 index 00000000000..f48f20ce119 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/objc/ObjcModelTest.java @@ -0,0 +1,275 @@ +package io.swagger.codegen.objc; + +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.CodegenProperty; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.codegen.languages.ObjcClientCodegen; +import io.swagger.models.ArrayModel; +import io.swagger.models.Model; +import io.swagger.models.ModelImpl; +import io.swagger.models.Path; +import io.swagger.models.Swagger; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.RefProperty; +import io.swagger.models.properties.StringProperty; +import io.swagger.parser.SwaggerParser; + +import com.google.common.collect.Sets; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.Map; + +public class ObjcModelTest { + + @Test(description = "convert a simple java model") + public void simpleModelTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("name", new StringProperty()) + .property("createdAt", new DateTimeProperty()) + .required("id") + .required("name"); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 3); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.datatype, "NSNumber*"); + Assert.assertEquals(property1.name, "_id"); + Assert.assertNull(property1.defaultValue); + Assert.assertEquals(property1.baseType, "NSNumber"); + Assert.assertTrue(property1.hasMore); + Assert.assertTrue(property1.required); + Assert.assertTrue(property1.isPrimitiveType); + Assert.assertTrue(property1.isNotContainer); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "name"); + Assert.assertEquals(property2.datatype, "NSString*"); + Assert.assertEquals(property2.name, "name"); + Assert.assertNull(property2.defaultValue); + Assert.assertEquals(property2.baseType, "NSString"); + Assert.assertTrue(property2.hasMore); + Assert.assertTrue(property2.required); + Assert.assertTrue(property2.isPrimitiveType); + Assert.assertTrue(property2.isNotContainer); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "createdAt"); + Assert.assertEquals(property3.datatype, "NSDate*"); + Assert.assertEquals(property3.name, "createdAt"); + Assert.assertNull(property3.defaultValue); + Assert.assertEquals(property3.baseType, "NSDate"); + Assert.assertNull(property3.hasMore); + Assert.assertNull(property3.required); + Assert.assertTrue(property3.isNotContainer); + } + + @Test(description = "convert a model with list property") + public void listPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("urls", new ArrayProperty() + .items(new StringProperty())) + .required("id"); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 2); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.datatype, "NSNumber*"); + Assert.assertEquals(property1.name, "_id"); + Assert.assertNull(property1.defaultValue); + Assert.assertEquals(property1.baseType, "NSNumber"); + Assert.assertTrue(property1.hasMore); + Assert.assertTrue(property1.required); + Assert.assertTrue(property1.isPrimitiveType); + Assert.assertTrue(property1.isNotContainer); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "urls"); + Assert.assertEquals(property2.datatype, "NSArray* /* NSString */"); + Assert.assertEquals(property2.name, "urls"); + Assert.assertNull(property2.defaultValue); + Assert.assertEquals(property2.baseType, "NSArray"); + Assert.assertNull(property2.hasMore); + Assert.assertEquals(property2.containerType, "array"); + Assert.assertNull(property2.required); + Assert.assertTrue(property2.isPrimitiveType); + Assert.assertTrue(property2.isContainer); + } + + @Test(description = "convert a model with a map property") + public void mapPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("translations", new MapProperty() + .additionalProperties(new StringProperty())) + .required("id"); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "translations"); + Assert.assertEquals(property1.datatype, "NSDictionary* /* NSString, NSString */"); + Assert.assertEquals(property1.name, "translations"); + Assert.assertEquals(property1.baseType, "NSDictionary"); + Assert.assertEquals(property1.containerType, "map"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isContainer); + Assert.assertTrue(property1.isPrimitiveType); + } + + @Test(description = "convert a model with complex property") + public void complexPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("children", new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "children"); + Assert.assertEquals(property1.datatype, "SWGChildren*"); + Assert.assertEquals(property1.name, "children"); + Assert.assertEquals(property1.baseType, "SWGChildren"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isNotContainer); + } + + @Test(description = "convert a model with complex list property") + public void complexListPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("children", new ArrayProperty() + .items(new RefProperty("#/definitions/Children"))); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "children"); + Assert.assertEquals(property1.complexType, "SWGChildren"); + Assert.assertEquals(property1.datatype, "NSArray*"); + Assert.assertEquals(property1.name, "children"); + Assert.assertEquals(property1.baseType, "NSArray"); + Assert.assertEquals(property1.containerType, "array"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isContainer); + } + + @Test(description = "convert a model with complex map property") + public void complexMapPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("children", new MapProperty() + .additionalProperties(new RefProperty("#/definitions/Children"))); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("SWGChildren")).size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "children"); + Assert.assertEquals(property1.complexType, "SWGChildren"); + Assert.assertEquals(property1.datatype, "NSDictionary* /* NSString, SWGChildren */"); + Assert.assertEquals(property1.name, "children"); + Assert.assertEquals(property1.baseType, "NSDictionary"); + Assert.assertEquals(property1.containerType, "map"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isContainer); + Assert.assertNull(property1.isNotContainer); + } + + @Test(description = "convert an array model") + public void arrayModelTest() { + final Model model = new ArrayModel() + .description("an array model") + .items(new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "an array model"); + Assert.assertEquals(cm.vars.size(), 0); + Assert.assertEquals(cm.parent, "NSMutableArray"); + Assert.assertEquals(cm.imports.size(), 1); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("SWGChildren")).size(), 1); + } + + @Test(description = "convert an map model") + public void mapModelTest() { + final Model model = new ModelImpl() + .description("a map model") + .additionalProperties(new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new ObjcClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "SWGSample"); + Assert.assertEquals(cm.description, "a map model"); + Assert.assertEquals(cm.vars.size(), 0); + Assert.assertEquals(cm.parent, "NSMutableDictionary"); + Assert.assertEquals(cm.imports.size(), 1); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("SWGChildren")).size(), 1); + } + + @Test(description = "create proper imports per #316") + public void issue316Test() { + final Swagger model = new SwaggerParser().read("src/test/resources/2_0/postBodyTest.json"); + final DefaultCodegen codegen = new ObjcClientCodegen(); + + final Map animalPaths = model.getPaths(); + + final Path animalOps = animalPaths.get("/animals"); + Assert.assertNotNull(animalOps.getPost()); + + final CodegenOperation animalCo = codegen.fromOperation("/animals", "POST", animalOps.getPost(), model.getDefinitions()); + Assert.assertEquals(animalCo.imports.size(), 1); + Assert.assertTrue(animalCo.imports.contains("SWGAnimal")); + + final Map insectPaths = model.getPaths(); + final Path insectOps = insectPaths.get("/insects"); + Assert.assertNotNull(insectOps.getPost()); + + final CodegenOperation insectCo = codegen.fromOperation("/insects", "POST", insectOps.getPost(), model.getDefinitions()); + Assert.assertEquals(insectCo.imports.size(), 1); + Assert.assertTrue(insectCo.imports.contains("SWGInsect")); + } +} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java new file mode 100644 index 00000000000..52ca64f2f59 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java @@ -0,0 +1,243 @@ +package io.swagger.codegen.php; + +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.CodegenProperty; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.codegen.languages.PhpClientCodegen; +import io.swagger.models.ArrayModel; +import io.swagger.models.Model; +import io.swagger.models.ModelImpl; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.RefProperty; +import io.swagger.models.properties.StringProperty; + +import com.google.common.collect.Sets; +import org.testng.Assert; +import org.testng.annotations.Test; + +public class PhpModelTest { + + @Test(description = "convert a simple php model") + public void simpleModelTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("name", new StringProperty()) + .property("createdAt", new DateTimeProperty()) + .required("id") + .required("name"); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 3); + Assert.assertEquals(cm.imports.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.datatype, "int"); + Assert.assertEquals(property1.name, "id"); + Assert.assertEquals(property1.defaultValue, "null"); + Assert.assertEquals(property1.baseType, "int"); + Assert.assertTrue(property1.hasMore); + Assert.assertTrue(property1.required); + Assert.assertTrue(property1.isPrimitiveType); + Assert.assertTrue(property1.isNotContainer); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "name"); + Assert.assertEquals(property2.datatype, "string"); + Assert.assertEquals(property2.name, "name"); + Assert.assertEquals(property2.defaultValue, "null"); + Assert.assertEquals(property2.baseType, "string"); + Assert.assertTrue(property2.hasMore); + Assert.assertTrue(property2.required); + Assert.assertTrue(property2.isPrimitiveType); + Assert.assertTrue(property2.isNotContainer); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "createdAt"); + Assert.assertEquals(property3.complexType, "\\DateTime"); + Assert.assertEquals(property3.datatype, "\\DateTime"); + Assert.assertEquals(property3.name, "created_at"); + Assert.assertEquals(property3.defaultValue, "null"); + Assert.assertEquals(property3.baseType, "\\DateTime"); + Assert.assertNull(property3.hasMore); + Assert.assertNull(property3.required); + Assert.assertTrue(property3.isNotContainer); + } + + @Test(description = "convert a model with list property") + public void listPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("id", new LongProperty()) + .property("urls", new ArrayProperty() + .items(new StringProperty())) + .required("id"); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 2); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.datatype, "int"); + Assert.assertEquals(property1.name, "id"); + Assert.assertEquals(property1.defaultValue, "null"); + Assert.assertEquals(property1.baseType, "int"); + Assert.assertTrue(property1.hasMore); + Assert.assertTrue(property1.required); + Assert.assertTrue(property1.isPrimitiveType); + Assert.assertTrue(property1.isNotContainer); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "urls"); + Assert.assertEquals(property2.datatype, "string[]"); + Assert.assertEquals(property2.name, "urls"); + Assert.assertEquals(property2.baseType, "array"); + Assert.assertNull(property2.hasMore); + Assert.assertEquals(property2.containerType, "array"); + Assert.assertNull(property2.required); + Assert.assertTrue(property2.isPrimitiveType); + Assert.assertTrue(property2.isContainer); + } + + @Test(description = "convert a model with a map property") + public void mapPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("translations", new MapProperty() + .additionalProperties(new StringProperty())) + .required("id"); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "translations"); + Assert.assertEquals(property1.datatype, "map[string,string]"); + Assert.assertEquals(property1.name, "translations"); + Assert.assertEquals(property1.baseType, "map"); + Assert.assertEquals(property1.containerType, "map"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isContainer); + Assert.assertTrue(property1.isPrimitiveType); + } + + @Test(description = "convert a model with complex property") + public void complexPropertyTest() { + final Model model = new ModelImpl() + .description("a sample model") + .property("children", new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "children"); + Assert.assertEquals(property1.datatype, "\\Swagger\\Client\\Model\\Children"); + Assert.assertEquals(property1.name, "children"); + Assert.assertEquals(property1.baseType, "Children"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isNotContainer); + } + + @Test(description = "convert a model with complex list property") + public void complexListProperty() { + final Model model = new ModelImpl() + .description("a sample model") + .property("children", new ArrayProperty() + .items(new RefProperty("#/definitions/Children"))); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "children"); + Assert.assertEquals(property1.datatype, "\\Swagger\\Client\\Model\\Children[]"); + Assert.assertEquals(property1.name, "children"); + Assert.assertEquals(property1.baseType, "array"); + Assert.assertEquals(property1.containerType, "array"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isContainer); + } + + @Test(description = "convert a model with complex map property") + public void complexMapProperty() { + final Model model = new ModelImpl() + .description("a sample model") + .property("children", new MapProperty() + .additionalProperties(new RefProperty("#/definitions/Children"))); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 1); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "children"); + Assert.assertEquals(property1.complexType, "Children"); + Assert.assertEquals(property1.datatype, "map[string,\\Swagger\\Client\\Model\\Children]"); + Assert.assertEquals(property1.name, "children"); + Assert.assertEquals(property1.baseType, "map"); + Assert.assertEquals(property1.containerType, "map"); + Assert.assertNull(property1.required); + Assert.assertTrue(property1.isContainer); + Assert.assertNull(property1.isNotContainer); + } + + @Test(description = "convert an array model") + public void arrayModelTest() { + final Model model = new ArrayModel() + .description("an array model") + .items(new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "an array model"); + Assert.assertEquals(cm.vars.size(), 0); + // skip import test as import is not used by PHP codegen + } + + @Test(description = "convert an map model") + public void mapModelTest() { + final Model model = new ModelImpl() + .description("a map model") + .additionalProperties(new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a map model"); + Assert.assertEquals(cm.vars.size(), 0); + Assert.assertEquals(cm.imports.size(), 2); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); + } +} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/python/PythonTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/python/PythonTest.java new file mode 100644 index 00000000000..07c4bc76b03 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/python/PythonTest.java @@ -0,0 +1,37 @@ +package io.swagger.codegen.python; + +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.codegen.languages.PythonClientCodegen; +import io.swagger.models.Operation; +import io.swagger.models.Swagger; +import io.swagger.parser.SwaggerParser; + +import org.testng.Assert; +import org.testng.annotations.Test; + +public class PythonTest { + + @Test(description = "convert a python model with dots") + public void modelTest() { + final Swagger swagger = new SwaggerParser().read("src/test/resources/2_0/v1beta3.json"); + final DefaultCodegen codegen = new PythonClientCodegen(); + + final CodegenModel simpleName = codegen.fromModel("v1beta3.Binding", swagger.getDefinitions().get("v1beta3.Binding")); + Assert.assertEquals(simpleName.name, "v1beta3.Binding"); + Assert.assertEquals(simpleName.classname, "V1beta3Binding"); + Assert.assertEquals(simpleName.classVarName, "v1beta3_binding"); + + final CodegenModel compoundName = codegen.fromModel("v1beta3.ComponentStatus", swagger.getDefinitions().get("v1beta3.ComponentStatus")); + Assert.assertEquals(compoundName.name, "v1beta3.ComponentStatus"); + Assert.assertEquals(compoundName.classname, "V1beta3ComponentStatus"); + Assert.assertEquals(compoundName.classVarName, "v1beta3_component_status"); + + final String path = "/api/v1beta3/namespaces/{namespaces}/bindings"; + final Operation operation = swagger.getPaths().get(path).getPost(); + final CodegenOperation codegenOperation = codegen.fromOperation(path, "get", operation, swagger.getDefinitions()); + Assert.assertEquals(codegenOperation.returnType, "V1beta3Binding"); + Assert.assertEquals(codegenOperation.returnBaseType, "V1beta3Binding"); + } +} diff --git a/modules/swagger-codegen/src/test/scala/Objc/ObjcModelTest.scala b/modules/swagger-codegen/src/test/scala/Objc/ObjcModelTest.scala deleted file mode 100644 index 3d509ca1a2d..00000000000 --- a/modules/swagger-codegen/src/test/scala/Objc/ObjcModelTest.scala +++ /dev/null @@ -1,255 +0,0 @@ -package Objc - -import io.swagger.codegen.languages.ObjcClientCodegen -import io.swagger.models._ -import io.swagger.models.properties._ -import io.swagger.parser.SwaggerParser -import org.junit.runner.RunWith -import org.scalatest.{FlatSpec, Matchers} -import org.scalatest.junit.JUnitRunner - -import scala.collection.JavaConverters._ - -@RunWith(classOf[JUnitRunner]) -class ObjcModelTest extends FlatSpec with Matchers { - - it should "convert a simple java model" in { - val model = new ModelImpl() - .description("a sample model") - .property("id", new LongProperty()) - .property("name", new StringProperty()) - .property("createdAt", new DateTimeProperty()) - .required("id") - .required("name") - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("a sample model") - cm.vars.size should be(3) - - val vars = cm.vars - vars.get(0).baseName should be("id") - vars.get(0).datatype should be("NSNumber*") - vars.get(0).name should be("_id") - vars.get(0).defaultValue should be(null) - vars.get(0).baseType should be("NSNumber") - vars.get(0).hasMore should equal(true) - vars.get(0).required should equal(true) - vars.get(0).isPrimitiveType should equal(true) - vars.get(0).isNotContainer should equal(true) - - vars.get(1).baseName should be("name") - vars.get(1).datatype should be("NSString*") - vars.get(1).name should be("name") - vars.get(1).defaultValue should be(null) - vars.get(1).baseType should be("NSString") - vars.get(1).hasMore should equal(true) - vars.get(1).required should equal(true) - vars.get(0).isPrimitiveType should equal(true) - vars.get(1).isNotContainer should equal(true) - - vars.get(2).baseName should be("createdAt") - vars.get(2).datatype should be("NSDate*") - vars.get(2).name should be("createdAt") - vars.get(2).defaultValue should be(null) - vars.get(2).baseType should be("NSDate") - vars.get(2).hasMore should equal(null) - vars.get(2).required should equal(null) - vars.get(2).isNotContainer should equal(true) - - } - - it should "convert a model with list property" in { - val model = new ModelImpl() - .description("a sample model") - .property("id", new LongProperty()) - .property("urls", new ArrayProperty() - .items(new StringProperty())) - .required("id") - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("a sample model") - cm.vars.size should be(2) - - val vars = cm.vars - vars.get(0).baseName should be("id") - vars.get(0).datatype should be("NSNumber*") - vars.get(0).name should be("_id") - vars.get(0).defaultValue should be(null) - vars.get(0).baseType should be("NSNumber") - vars.get(0).hasMore should equal(true) - vars.get(0).required should equal(true) - vars.get(0).isPrimitiveType should equal(true) - vars.get(0).isNotContainer should equal(true) - - vars.get(1).baseName should be("urls") - vars.get(1).datatype should be("NSArray* /* NSString */") - vars.get(1).name should be("urls") - // vars.get(1).defaultValue should be ("null") - vars.get(1).baseType should be("NSArray") - vars.get(1).hasMore should be(null) - vars.get(1).containerType should equal("array") - vars.get(1).required should equal(null) - vars.get(1).isPrimitiveType should equal(true) - vars.get(1).isContainer should equal(true) - } - - it should "convert a model with a map property" in { - val model = new ModelImpl() - .description("a sample model") - .property("translations", new MapProperty() - .additionalProperties(new StringProperty())) - .required("id") - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("a sample model") - cm.vars.size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("translations") - vars.get(0).datatype should be("NSDictionary* /* NSString, NSString */") - vars.get(0).name should be("translations") - vars.get(0).baseType should be("NSDictionary") - vars.get(0).containerType should be("map") - vars.get(0).required should equal(null) - vars.get(0).isContainer should equal(true) - vars.get(0).isPrimitiveType should equal(true) - } - - it should "convert a model with complex property" in { - val model = new ModelImpl() - .description("a sample model") - .property("children", new RefProperty("#/definitions/Children")) - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("a sample model") - cm.vars.size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("children") - vars.get(0).datatype should be("SWGChildren*") - vars.get(0).name should be("children") - vars.get(0).baseType should be("SWGChildren") - vars.get(0).required should equal(null) - vars.get(0).isNotContainer should equal(true) - } - - it should "convert a model with complex list property" in { - val model = new ModelImpl() - .description("a sample model") - .property("children", new ArrayProperty() - .items(new RefProperty("#/definitions/Children"))) - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("a sample model") - cm.vars.size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("children") - vars.get(0).complexType should be("SWGChildren") - vars.get(0).datatype should be("NSArray*") - vars.get(0).name should be("children") - vars.get(0).baseType should be("NSArray") - vars.get(0).containerType should be("array") - vars.get(0).required should equal(null) - vars.get(0).isContainer should equal(true) - } - - it should "convert a model with complex map property" in { - val model = new ModelImpl() - .description("a sample model") - .property("children", new MapProperty() - .additionalProperties(new RefProperty("#/definitions/Children"))) - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("a sample model") - cm.vars.size should be(1) - (cm.imports.asScala.toSet & Set("SWGChildren")).size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("children") - vars.get(0).complexType should be("SWGChildren") - vars.get(0).datatype should be("NSDictionary* /* NSString, SWGChildren */") - vars.get(0).name should be("children") - vars.get(0).baseType should be("NSDictionary") - vars.get(0).containerType should be("map") - vars.get(0).required should equal(null) - vars.get(0).isContainer should equal(true) - vars.get(0).isNotContainer should be(null) - } - - it should "convert an array model" in { - val model = new ArrayModel() - .description("an array model") - .items(new RefProperty("#/definitions/Children")) - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("an array model") - cm.vars.size should be(0) - cm.parent should be("NSMutableArray") - cm.imports.size should be(1) - (cm.imports.asScala.toSet & Set("SWGChildren")).size should be(1) - } - - it should "convert an map model" in { - val model = new ModelImpl() - .description("an map model") - .additionalProperties(new RefProperty("#/definitions/Children")) - - val codegen = new ObjcClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("SWGSample") - cm.description should be("an map model") - cm.vars.size should be(0) - cm.parent should be("NSMutableDictionary") - cm.imports.size should be(1) - (cm.imports.asScala.toSet & Set("SWGChildren")).size should be(1) - } - - it should "create proper imports per #316" in { - val model = new SwaggerParser().read("src/test/resources/2_0/postBodyTest.json") - val codegen = new ObjcClientCodegen() - - val animalPaths = model.getPaths() - val animalOps = animalPaths.get("/animals") - animalOps.getPost() should not be (null) - val animalCo = codegen.fromOperation("/animals", "POST", animalOps.getPost(), model.getDefinitions()) - animalCo.imports.size should be(1) - animalCo.imports.contains("SWGAnimal") should equal(true) - - val insectPaths = model.getPaths() - val insectOps = insectPaths.get("/insects") - insectOps.getPost() should not be (null) - val insectCo = codegen.fromOperation("/insects", "POST", insectOps.getPost(), model.getDefinitions()) - insectCo.imports.size should be(1) - insectCo.imports.contains("SWGInsect") should equal(true) - } -} diff --git a/modules/swagger-codegen/src/test/scala/php/PhpModelTest.scala b/modules/swagger-codegen/src/test/scala/php/PhpModelTest.scala deleted file mode 100644 index ffb9c8683db..00000000000 --- a/modules/swagger-codegen/src/test/scala/php/PhpModelTest.scala +++ /dev/null @@ -1,257 +0,0 @@ -package php - -import io.swagger.codegen.languages.PhpClientCodegen -import io.swagger.models._ -import io.swagger.models.properties._ -import org.junit.runner.RunWith -import org.scalatest.{FlatSpec, Matchers} -import org.scalatest.junit.JUnitRunner - -import scala.collection.JavaConverters._ - -@RunWith(classOf[JUnitRunner]) -class PhpModelTest extends FlatSpec with Matchers { - - it should "convert a simple php model" in { - val model = new ModelImpl() - .description("a sample model") - .property("id", new LongProperty()) - .property("name", new StringProperty()) - .property("createdAt", new DateTimeProperty()) - .required("id") - .required("name") - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("a sample model") - cm.vars.size should be(3) - - val vars = cm.vars - vars.get(0).baseName should be("id") - vars.get(0).datatype should be("int") - vars.get(0).name should be("id") - vars.get(0).defaultValue should be("null") - vars.get(0).baseType should be("int") - vars.get(0).hasMore should equal(true) - vars.get(0).required should equal(true) - vars.get(0).isPrimitiveType should equal(true) - vars.get(0).isNotContainer should equal(true) - - vars.get(1).baseName should be("name") - vars.get(1).datatype should be("string") - vars.get(1).name should be("name") - vars.get(1).defaultValue should be("null") - vars.get(1).baseType should be("string") - vars.get(1).hasMore should equal(true) - vars.get(1).required should equal(true) - vars.get(0).isPrimitiveType should equal(true) - vars.get(1).isNotContainer should equal(true) - - vars.get(2).baseName should be("createdAt") - vars.get(2).complexType should be("\\DateTime") - vars.get(2).datatype should be("\\DateTime") - vars.get(2).name should be("created_at") - vars.get(2).defaultValue should be("null") - vars.get(2).baseType should be("\\DateTime") - vars.get(2).hasMore should equal(null) - vars.get(2).required should equal(null) - vars.get(2).isNotContainer should equal(true) - - cm.imports.size() should be(1) - } - - it should "convert a model with list property" in { - val model = new ModelImpl() - .description("a sample model") - .property("id", new LongProperty()) - .property("urls", new ArrayProperty() - .items(new StringProperty())) - .required("id") - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("a sample model") - cm.vars.size should be(2) - - val vars = cm.vars - vars.get(0).baseName should be("id") - vars.get(0).datatype should be("int") - vars.get(0).name should be("id") - vars.get(0).defaultValue should be("null") - vars.get(0).baseType should be("int") - vars.get(0).hasMore should equal(true) - vars.get(0).required should equal(true) - vars.get(0).isPrimitiveType should equal(true) - vars.get(0).isNotContainer should equal(true) - - vars.get(1).baseName should be("urls") - vars.get(1).datatype should be("string[]") - vars.get(1).name should be("urls") - vars.get(1).baseType should be("array") - vars.get(1).hasMore should be(null) - vars.get(1).containerType should equal("array") - vars.get(1).required should equal(null) - vars.get(1).isPrimitiveType should equal(true) - vars.get(1).isContainer should equal(true) - } - - it should "convert a model with a map property" in { - val model = new ModelImpl() - .description("a sample model") - .property("translations", new MapProperty() - .additionalProperties(new StringProperty())) - .required("id") - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("a sample model") - cm.vars.size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("translations") - vars.get(0).datatype should be("map[string,string]") - vars.get(0).name should be("translations") - vars.get(0).baseType should be("map") - vars.get(0).containerType should be("map") - vars.get(0).required should equal(null) - vars.get(0).isContainer should equal(true) - vars.get(0).isPrimitiveType should equal(true) - } - - it should "convert a model with complex property" in { - val model = new ModelImpl() - .description("a sample model") - .property("children", new RefProperty("#/definitions/Children")) - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("a sample model") - cm.vars.size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("children") - vars.get(0).datatype should be("\\Swagger\\Client\\Model\\Children") - vars.get(0).name should be("children") - vars.get(0).baseType should be("Children") - vars.get(0).required should equal(null) - vars.get(0).isNotContainer should equal(true) - } - - it should "convert a model with complex list property" in { - val model = new ModelImpl() - .description("a sample model") - .property("children", new ArrayProperty() - .items(new RefProperty("#/definitions/Children"))) - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("a sample model") - cm.vars.size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("children") - vars.get(0).complexType should be("Children") - vars.get(0).datatype should be("\\Swagger\\Client\\Model\\Children[]") - vars.get(0).name should be("children") - vars.get(0).baseType should be("array") - vars.get(0).containerType should be("array") - vars.get(0).required should equal(null) - vars.get(0).isContainer should equal(true) - } - - it should "convert a model with complex map property" in { - val model = new ModelImpl() - .description("a sample model") - .property("children", new MapProperty() - .additionalProperties(new RefProperty("#/definitions/Children"))) - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("a sample model") - cm.vars.size should be(1) - (cm.imports.asScala.toSet & Set("Children")).size should be(1) - - val vars = cm.vars - vars.get(0).baseName should be("children") - vars.get(0).complexType should be("Children") - vars.get(0).datatype should be("map[string,\\Swagger\\Client\\Model\\Children]") - vars.get(0).name should be("children") - vars.get(0).baseType should be("map") - vars.get(0).containerType should be("map") - vars.get(0).required should equal(null) - vars.get(0).isContainer should equal(true) - vars.get(0).isNotContainer should be(null) - } - - it should "convert an array model" in { - val model = new ArrayModel() - .description("an array model") - .items(new RefProperty("#/definitions/Children")) - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("an array model") - cm.vars.size should be(0) - // skip import test as import is not used by PHP codegen - //cm.imports.size should be (1) - //(cm.imports.asScala.toSet & Set("Children")).size should be (1) - } - - it should "convert an map model" in { - val model = new ModelImpl() - .description("an map model") - .additionalProperties(new RefProperty("#/definitions/Children")) - - val codegen = new PhpClientCodegen() - val cm = codegen.fromModel("sample", model) - - cm.name should be("sample") - cm.classname should be("Sample") - cm.description should be("an map model") - cm.vars.size should be(0) - cm.imports.size should be(2) - (cm.imports.asScala.toSet & Set("Children")).size should be(1) - } - - // skip import test as import is not used by PHP codegen - //it should "create proper imports per #316" in { - // val model = new SwaggerParser() - // .read("src/test/resources/2_0/postBodyTest.json") - // val codegen = new PhpClientCodegen() - - // val animalPaths = model.getPaths() - // val animalOps = animalPaths.get("/animals") - // animalOps.getPost() should not be (null) - // val animalCo = codegen.fromOperation("/animals", "POST", animalOps.getPost(), model.getDefinitions()) - // animalCo.imports should be (1) - // animalCo.imports.size should be (1) - // animalCo.imports.contains("Animal") should equal (true) - - // val insectPaths = model.getPaths() - // val insectOps = insectPaths.get("/insects") - // insectOps.getPost() should not be (null) - // val insectCo = codegen.fromOperation("/insects", "POST", insectOps.getPost(), model.getDefinitions()) - // insectCo.imports.size should be (1) - // insectCo.imports.contains("Insect") should equal (true) - //} -} diff --git a/modules/swagger-codegen/src/test/scala/python/PythonTest.scala b/modules/swagger-codegen/src/test/scala/python/PythonTest.scala deleted file mode 100644 index 9f9570a3e79..00000000000 --- a/modules/swagger-codegen/src/test/scala/python/PythonTest.scala +++ /dev/null @@ -1,32 +0,0 @@ -package python - -import io.swagger.codegen.languages.PythonClientCodegen -import io.swagger.parser.SwaggerParser -import org.junit.runner.RunWith -import org.scalatest.{FlatSpec, Matchers} -import org.scalatest.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -class PythonTest extends FlatSpec with Matchers { - it should "convert a python model with dots" in { - val swagger = new SwaggerParser() - .read("src/test/resources/2_0/v1beta3.json") - - val codegen = new PythonClientCodegen() - val simpleName = codegen.fromModel("v1beta3.Binding", swagger.getDefinitions().get("v1beta3.Binding")) - simpleName.name should be("v1beta3.Binding") - simpleName.classname should be("V1beta3Binding") - simpleName.classVarName should be("v1beta3_binding") - - val compoundName = codegen.fromModel("v1beta3.ComponentStatus", swagger.getDefinitions().get("v1beta3.ComponentStatus")) - compoundName.name should be("v1beta3.ComponentStatus") - compoundName.classname should be("V1beta3ComponentStatus") - compoundName.classVarName should be("v1beta3_component_status") - - val path = "/api/v1beta3/namespaces/{namespaces}/bindings" - val operation = swagger.getPaths().get(path).getPost() - val codegenOperation = codegen.fromOperation(path, "get", operation, swagger.getDefinitions()) - codegenOperation.returnType should be("V1beta3Binding") - codegenOperation.returnBaseType should be("V1beta3Binding") - } -}