From 86587607e13788e42ad0df91554528c1340e108e Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 19 Jan 2016 00:51:21 +0800 Subject: [PATCH 1/3] add api test and model test files --- .../io/swagger/codegen/CodegenConfig.java | 16 +++++++ .../io/swagger/codegen/DefaultCodegen.java | 48 +++++++++++++++++++ .../io/swagger/codegen/DefaultGenerator.java | 45 +++++++++++++++++ .../codegen/languages/PhpClientCodegen.java | 19 ++++++++ 4 files changed, 128 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java index a74e652bb6d..720f2f8aa67 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java @@ -19,10 +19,14 @@ public interface CodegenConfig { Map additionalProperties(); + String testPackage(); + String apiPackage(); String apiFileFolder(); + String apiTestFileFolder(); + String fileSuffix(); String outputFolder(); @@ -33,6 +37,8 @@ public interface CodegenConfig { String modelFileFolder(); + String modelTestFileFolder(); + String modelPackage(); String toApiName(String name); @@ -87,6 +93,10 @@ public interface CodegenConfig { Map modelTemplateFiles(); + Map apiTestTemplateFiles(); + + Map modelTestTemplateFiles(); + Set languageSpecificPrimitives(); void preprocessSwagger(Swagger swagger); @@ -97,6 +107,10 @@ public interface CodegenConfig { String toModelFilename(String name); + String toApiTestFilename(String name); + + String toModelTestFilename(String name); + String toModelImport(String name); String toApiImport(String name); @@ -115,6 +129,8 @@ public interface CodegenConfig { String apiFilename(String templateName, String tag); + String apiTestFilename(String templateName, String tag); + boolean shouldOverwrite(String filename); boolean isSkipOverwrite(); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index abc4d045315..5b2c45166ac 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -63,8 +63,11 @@ public class DefaultCodegen { protected Set languageSpecificPrimitives = new HashSet(); protected Map importMapping = new HashMap(); protected String modelPackage = "", apiPackage = "", fileSuffix; + protected String testPackage = ""; protected Map apiTemplateFiles = new HashMap(); protected Map modelTemplateFiles = new HashMap(); + protected Map apiTestTemplateFiles = new HashMap(); + protected Map modelTestTemplateFiles = new HashMap(); protected String templateDir; protected String embeddedTemplateDir; protected Map additionalProperties = new HashMap(); @@ -170,6 +173,10 @@ public class DefaultCodegen { return importMapping; } + public String testPackage() { + return testPackage; + } + public String modelPackage() { return modelPackage; } @@ -194,6 +201,14 @@ public class DefaultCodegen { } } + public Map apiTestTemplateFiles() { + return apiTestTemplateFiles; + } + + public Map modelTestTemplateFiles() { + return modelTestTemplateFiles; + } + public Map apiTemplateFiles() { return apiTemplateFiles; } @@ -210,6 +225,14 @@ public class DefaultCodegen { return outputFolder + "/" + modelPackage().replace('.', '/'); } + public String apiTestFileFolder() { + return outputFolder + "/" + testPackage().replace('.', '/'); + } + + public String modelTestFileFolder() { + return outputFolder + "/" + testPackage().replace('.', '/'); + } + public Map additionalProperties() { return additionalProperties; } @@ -260,6 +283,16 @@ public class DefaultCodegen { return toApiName(name); } + /** + * Return the file name of the Api + * + * @param name the file name of the Api + * @return the file name of the Api + */ + public String toApiTestFilename(String name) { + return toApiName(name) + "Test"; + } + /** * Return the variable name in the Api * @@ -280,6 +313,16 @@ public class DefaultCodegen { return initialCaps(name); } + /** + * Return the capitalized file name of the model + * + * @param name the model name + * @return the file name of the model + */ + public String toModelTestFilename(String name) { + return initialCaps(name) + "Test"; + } + /** * Return the operation ID (method name) * @@ -2028,6 +2071,11 @@ public class DefaultCodegen { return apiFileFolder() + '/' + toApiFilename(tag) + suffix; } + public String apiTestFilename(String templateName, String tag) { + String suffix = apiTestTemplateFiles().get(templateName); + return apiTestFileFolder() + '/' + toApiTestFilename(tag) + suffix; + } + public boolean shouldOverwrite(String filename) { return !(skipOverwrite && new File(filename).exists()); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 79b07f2427b..00878ff5236 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -211,6 +211,28 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { writeToFile(filename, tmpl.execute(models)); files.add(new File(filename)); } + + // to generate model test files + for (String templateName : config.modelTestTemplateFiles().keySet()) { + String suffix = config.modelTestTemplateFiles().get(templateName); + String filename = config.modelTestFileFolder() + File.separator + config.toModelTestFilename(name) + suffix; + if (!config.shouldOverwrite(filename)) { + continue; + } + String templateFile = getFullTemplateFile(config, templateName); + String template = readTemplate(templateFile); + Template tmpl = Mustache.compiler() + .withLoader(new Mustache.TemplateLoader() { + @Override + public Reader getTemplate(String name) { + return getTemplateReader(getFullTemplateFile(config, name + ".mustache")); + } + }) + .defaultValue("") + .compile(template); + writeToFile(filename, tmpl.execute(models)); + files.add(new File(filename)); + } } catch (Exception e) { throw new RuntimeException("Could not generate model '" + name + "'", e); } @@ -288,6 +310,29 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { writeToFile(filename, tmpl.execute(operation)); files.add(new File(filename)); } + + for (String templateName : config.apiTestTemplateFiles().keySet()) { + String filename = config.apiTestFilename(templateName, tag); + if (!config.shouldOverwrite(filename) && new File(filename).exists()) { + continue; + } + + String templateFile = getFullTemplateFile(config, templateName); + String template = readTemplate(templateFile); + Template tmpl = Mustache.compiler() + .withLoader(new Mustache.TemplateLoader() { + @Override + public Reader getTemplate(String name) { + return getTemplateReader(getFullTemplateFile(config, name + ".mustache")); + } + }) + .defaultValue("") + .compile(template); + + writeToFile(filename, tmpl.execute(operation)); + files.add(new File(filename)); + } + } catch (Exception e) { throw new RuntimeException("Could not generate api file for '" + tag + "'", e); } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index 12e6b3ea8ed..fa5451372c5 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -41,9 +41,12 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { outputFolder = "generated-code" + File.separator + "php"; modelTemplateFiles.put("model.mustache", ".php"); apiTemplateFiles.put("api.mustache", ".php"); + modelTestTemplateFiles.put("model_test.mustache", ".php"); + apiTestTemplateFiles.put("api_test.mustache", ".php"); embeddedTemplateDir = templateDir = "php"; apiPackage = invokerPackage + "\\Api"; modelPackage = invokerPackage + "\\Model"; + testPackage = invokerPackage + "\\Tests"; reservedWords = new HashSet( Arrays.asList( @@ -236,6 +239,16 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { return (outputFolder + "/" + toPackagePath(modelPackage, srcBasePath)); } + @Override + public String apiTestFileFolder() { + return (outputFolder + "/" + toPackagePath(testPackage, srcBasePath)); + } + + @Override + public String modelTestFileFolder() { + return (outputFolder + "/" + toPackagePath(testPackage, srcBasePath)); + } + @Override public String getTypeDeclaration(Property p) { if (p instanceof ArrayProperty) { @@ -364,6 +377,12 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { return toModelName(name); } + @Override + public String toModelTestFilename(String name) { + // should be the same as the model name + return toModelName(name) + "Test"; + } + @Override public String toOperationId(String operationId) { // throw exception if method name is empty From 8927c1dc0f7be50d43e29c5c1e2ed192a5cabc71 Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 19 Jan 2016 14:49:32 +0800 Subject: [PATCH 2/3] add test template for php --- .../src/main/resources/php/api_test.mustache | 79 ++++++++ .../main/resources/php/model_test.mustache | 74 ++++++++ .../lib/Tests/CategoryTest.php | 70 +++++++ .../SwaggerClient-php/lib/Tests/OrderTest.php | 70 +++++++ .../lib/Tests/PetApiTest.php | 178 ++++++++++++++++++ .../SwaggerClient-php/lib/Tests/PetTest.php | 70 +++++++ .../lib/Tests/StoreApiTest.php | 112 +++++++++++ .../SwaggerClient-php/lib/Tests/TagTest.php | 70 +++++++ .../lib/Tests/UserApiTest.php | 156 +++++++++++++++ .../SwaggerClient-php/lib/Tests/UserTest.php | 70 +++++++ 10 files changed, 949 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/php/api_test.mustache create mode 100644 modules/swagger-codegen/src/main/resources/php/model_test.mustache create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/CategoryTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/OrderTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/PetApiTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/PetTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/StoreApiTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/TagTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/UserApiTest.php create mode 100644 samples/client/petstore/php/SwaggerClient-php/lib/Tests/UserTest.php diff --git a/modules/swagger-codegen/src/main/resources/php/api_test.mustache b/modules/swagger-codegen/src/main/resources/php/api_test.mustache new file mode 100644 index 00000000000..ee26ec31ff2 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/php/api_test.mustache @@ -0,0 +1,79 @@ + Date: Tue, 19 Jan 2016 19:50:27 +0800 Subject: [PATCH 3/3] add comments --- .../main/java/io/swagger/codegen/DefaultCodegen.java | 12 ++++++++++-- .../java/io/swagger/codegen/DefaultGenerator.java | 1 + .../php/SwaggerClient-php/lib/Tests/PetApiTest.php | 10 ---------- .../php/SwaggerClient-php/lib/Tests/StoreApiTest.php | 4 ---- .../php/SwaggerClient-php/lib/Tests/UserApiTest.php | 8 -------- 5 files changed, 11 insertions(+), 24 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 5b2c45166ac..f9bd468a25b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -284,7 +284,7 @@ public class DefaultCodegen { } /** - * Return the file name of the Api + * Return the file name of the Api Test * * @param name the file name of the Api * @return the file name of the Api @@ -314,7 +314,7 @@ public class DefaultCodegen { } /** - * Return the capitalized file name of the model + * Return the capitalized file name of the model test * * @param name the model name * @return the file name of the model @@ -2071,6 +2071,14 @@ public class DefaultCodegen { return apiFileFolder() + '/' + toApiFilename(tag) + suffix; } + /** + * Return the full path and API test file + * + * @param templateName template name + * @param tag tag + * + * @return the API test file name with full path + */ public String apiTestFilename(String templateName, String tag) { String suffix = apiTestTemplateFiles().get(templateName); return apiTestFileFolder() + '/' + toApiTestFilename(tag) + suffix; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 00878ff5236..c08babd96c0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -311,6 +311,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { files.add(new File(filename)); } + // to generate api test files for (String templateName : config.apiTestTemplateFiles().keySet()) { String filename = config.apiTestFilename(templateName, tag); if (!config.shouldOverwrite(filename) && new File(filename).exists()) { diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Tests/PetApiTest.php b/samples/client/petstore/php/SwaggerClient-php/lib/Tests/PetApiTest.php index 75928df30d3..3df47d97be1 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Tests/PetApiTest.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Tests/PetApiTest.php @@ -72,7 +72,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_updatePet() { - //$body = null } @@ -83,7 +82,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_addPet() { - //$body = null } @@ -94,7 +92,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_findPetsByStatus() { - //$status = null } @@ -105,7 +102,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_findPetsByTags() { - //$tags = null } @@ -116,7 +112,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_getPetById() { - //$pet_id } @@ -127,7 +122,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_updatePetWithForm() { - //$pet_id, $name = null, $status = null } @@ -138,7 +132,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_deletePet() { - //$pet_id, $api_key = null } @@ -149,7 +142,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_uploadFile() { - //$pet_id, $additional_metadata = null, $file = null } @@ -160,7 +152,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_getPetByIdWithByteArray() { - //$pet_id } @@ -171,7 +162,6 @@ class PetApiTest extends \PHPUnit_Framework_TestCase * */ public function test_addPetUsingByteArray() { - //$body = null } diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Tests/StoreApiTest.php b/samples/client/petstore/php/SwaggerClient-php/lib/Tests/StoreApiTest.php index 14cb5a68290..899f5791c8a 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Tests/StoreApiTest.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Tests/StoreApiTest.php @@ -72,7 +72,6 @@ class StoreApiTest extends \PHPUnit_Framework_TestCase * */ public function test_getInventory() { - // } @@ -83,7 +82,6 @@ class StoreApiTest extends \PHPUnit_Framework_TestCase * */ public function test_placeOrder() { - //$body = null } @@ -94,7 +92,6 @@ class StoreApiTest extends \PHPUnit_Framework_TestCase * */ public function test_getOrderById() { - //$order_id } @@ -105,7 +102,6 @@ class StoreApiTest extends \PHPUnit_Framework_TestCase * */ public function test_deleteOrder() { - //$order_id } diff --git a/samples/client/petstore/php/SwaggerClient-php/lib/Tests/UserApiTest.php b/samples/client/petstore/php/SwaggerClient-php/lib/Tests/UserApiTest.php index f69ccf8ef7b..500b99c4c4f 100644 --- a/samples/client/petstore/php/SwaggerClient-php/lib/Tests/UserApiTest.php +++ b/samples/client/petstore/php/SwaggerClient-php/lib/Tests/UserApiTest.php @@ -72,7 +72,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_createUser() { - //$body = null } @@ -83,7 +82,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_createUsersWithArrayInput() { - //$body = null } @@ -94,7 +92,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_createUsersWithListInput() { - //$body = null } @@ -105,7 +102,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_loginUser() { - //$username = null, $password = null } @@ -116,7 +112,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_logoutUser() { - // } @@ -127,7 +122,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_getUserByName() { - //$username } @@ -138,7 +132,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_updateUser() { - //$username, $body = null } @@ -149,7 +142,6 @@ class UserApiTest extends \PHPUnit_Framework_TestCase * */ public function test_deleteUser() { - //$username }