diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractIntegrationTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractIntegrationTest.java new file mode 100644 index 00000000000..faf5c3551ca --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/AbstractIntegrationTest.java @@ -0,0 +1,45 @@ +package io.swagger.codegen; + +import org.testng.annotations.Test; +import org.testng.reporters.Files; + +import java.io.IOException; +import java.util.Map; + +import io.swagger.codegen.utils.IntegrationTestPathsConfig; +import io.swagger.models.Swagger; +import io.swagger.parser.SwaggerParser; + +import static io.swagger.codegen.utils.AssertFile.assertPathEqualsRecursively; + +public abstract class AbstractIntegrationTest { + + protected abstract IntegrationTestPathsConfig getIntegrationTestPathsConfig(); + + protected abstract CodegenConfig getCodegenConfig(); + + protected abstract Map configProperties(); + + @Test + public void generatesCorrectDirectoryStructure() throws IOException { + DefaultGenerator codeGen = new DefaultGenerator(); + IntegrationTestPathsConfig integrationTestPathsConfig = getIntegrationTestPathsConfig(); + + String specContent = Files.readFile(integrationTestPathsConfig.getSpecPath().toFile()); + Swagger swagger = new SwaggerParser().parse(specContent); + + CodegenConfig codegenConfig = getCodegenConfig(); + codegenConfig.setOutputDir(integrationTestPathsConfig.getOutputPath().toString()); + + ClientOpts clientOpts = new ClientOpts(); + clientOpts.setProperties(configProperties()); + ClientOptInput opts = new ClientOptInput() + .config(codegenConfig) + .opts(clientOpts) + .swagger(swagger); + + codeGen.opts(opts).generate(); + + assertPathEqualsRecursively(integrationTestPathsConfig.getExpectedPath(), integrationTestPathsConfig.getOutputPath()); + } +} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/Integrationtest/Angular2GenerationWithAditionPropertiesTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/Integrationtest/Angular2GenerationWithAditionPropertiesTest.java deleted file mode 100644 index 98878490fa6..00000000000 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/Integrationtest/Angular2GenerationWithAditionPropertiesTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package io.swagger.codegen.typescript.integrationtest; - -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; -import org.testng.reporters.Files; - -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.Map; - -import io.swagger.codegen.ClientOptInput; -import io.swagger.codegen.ClientOpts; -import io.swagger.codegen.CodegenConfig; -import io.swagger.codegen.DefaultGenerator; -import io.swagger.codegen.languages.TypeScriptAngular2ClientCodegen; -import io.swagger.models.Swagger; -import io.swagger.parser.SwaggerParser; - -import static io.swagger.codegen.typescript.integrationtest.AssertFile.assertPathEqualsRecursively; - -public class Angular2GenerationWithAditionPropertiesTest { - - private DefaultGenerator codeGen; - private Path integrationTestPath; - private Path outputPath; - private Path specPath; - private Path expectedPath; - - @BeforeMethod - public void setUp() { - codeGen = new DefaultGenerator(); - integrationTestPath = Paths.get("target/test-classes/integrationtest").toAbsolutePath(); - outputPath = integrationTestPath.resolve("typescript/additional-properties-result"); - expectedPath = integrationTestPath.resolve("typescript/additional-properties-expected"); - specPath = integrationTestPath.resolve("typescript/additional-properties-spec.json"); - - } - - protected CodegenConfig getCodegenConfig() { - return new TypeScriptAngular2ClientCodegen(); - } - - protected Map configProperties() { - Map propeties = new HashMap<>(); - propeties.put("npmName", "additionalPropertiesTest"); - propeties.put("npmVersion", "1.0.2"); - propeties.put("snapshot", "false"); - - return propeties; - } - - @Test(description = "The correct output is generated for a spec with additional-properties") - public void shouldGenerateCorrectTypescriptModels() throws IOException { - String specContent = Files.readFile(specPath.toFile()); - Swagger swagger = new SwaggerParser().parse(specContent); - - CodegenConfig codegenConfig = getCodegenConfig(); - codegenConfig.setOutputDir(outputPath.toString()); - - ClientOpts clientOpts = new ClientOpts(); - clientOpts.setProperties(configProperties()); - ClientOptInput opts = new ClientOptInput() - .config(codegenConfig) - .opts(clientOpts) - .swagger(swagger); - - codeGen.opts(opts).generate(); - - assertPathEqualsRecursively(expectedPath, outputPath); - } - -} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/typescriptangular2/TypescriptAngular2AdditionalPropertiesIntegrationTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/typescriptangular2/TypescriptAngular2AdditionalPropertiesIntegrationTest.java new file mode 100644 index 00000000000..f8e89a592ed --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/typescriptangular2/TypescriptAngular2AdditionalPropertiesIntegrationTest.java @@ -0,0 +1,31 @@ +package io.swagger.codegen.typescript.typescriptangular2; + +import java.util.HashMap; +import java.util.Map; + +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.languages.TypeScriptAngular2ClientCodegen; +import io.swagger.codegen.utils.IntegrationTestPathsConfig; + +public class TypescriptAngular2AdditionalPropertiesIntegrationTest extends io.swagger.codegen.AbstractIntegrationTest { + + @Override + protected CodegenConfig getCodegenConfig() { + return new TypeScriptAngular2ClientCodegen(); + } + + @Override + protected Map configProperties() { + Map propeties = new HashMap<>(); + propeties.put("npmName", "additionalPropertiesTest"); + propeties.put("npmVersion", "1.0.2"); + propeties.put("snapshot", "false"); + + return propeties; + } + + @Override + protected IntegrationTestPathsConfig getIntegrationTestPathsConfig() { + return new IntegrationTestPathsConfig("typescript/additional-properties"); + } +} diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/integrationtest/AssertFile.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java similarity index 80% rename from modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/integrationtest/AssertFile.java rename to modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java index 6f78c80a755..5ec2d279d7d 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/typescript/integrationtest/AssertFile.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java @@ -1,4 +1,4 @@ -package io.swagger.codegen.typescript.integrationtest; +package io.swagger.codegen.utils; import org.testng.Assert; @@ -48,12 +48,12 @@ public class AssertFile { Path actualDir = absoluteActual.resolve(relativeExpectedDir); if (!Files.exists(actualDir)) { - fail(String.format("Directory \'%s\' missing in target.", expectedDir.getFileName())); + fail(String.format("Directory '%s' is missing.", actualDir)); } - assertEquals(expectedDir.toFile().list().length, - actualDir.toFile().list().length, - String.format("Directory size of \'%s\' differ. ", relativeExpectedDir)); + assertEquals(expectedDir.toFile().list(), + actualDir.toFile().list(), + String.format("Directory content of '%s' and '%s' differ.", expectedDir, actualDir)); return FileVisitResult.CONTINUE; } @@ -64,11 +64,11 @@ public class AssertFile { Path actualFile = absoluteActual.resolve(relativeExpectedFile); if (!Files.exists(actualFile)) { - fail(String.format("File \'%s\' missing in target.", expectedFile.getFileName())); + fail(String.format("File '%s' is missing.", actualFile)); } assertEquals(Files.readAllLines(expectedFile, Charset.defaultCharset()), - Files.readAllLines(actualFile, Charset.defaultCharset()), - String.format("File content of \'%s\' differ. ", relativeExpectedFile)); + Files.readAllLines(actualFile, Charset.defaultCharset()), + String.format("File content of '%s' and '%s' differ.", expectedFile, actualFile)); return FileVisitResult.CONTINUE; } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/IntegrationTestPathsConfig.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/IntegrationTestPathsConfig.java new file mode 100644 index 00000000000..25aca976e61 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/IntegrationTestPathsConfig.java @@ -0,0 +1,33 @@ +package io.swagger.codegen.utils; + +import java.nio.file.Path; +import java.nio.file.Paths; + +public class IntegrationTestPathsConfig { + private static final Path INTEGRATION_TEST_PATH = Paths.get("target/test-classes/integrationtests").toAbsolutePath(); + private final Path outputPath; + private final Path specPath; + private final Path expectedPath; + + public IntegrationTestPathsConfig(String location) { + this(location + "-spec.json", location + "-result", location + "-expected"); + } + + public IntegrationTestPathsConfig(String specLocation, String outputLocation, String expectedLocation) { + outputPath = INTEGRATION_TEST_PATH.resolve(outputLocation); + expectedPath = INTEGRATION_TEST_PATH.resolve(expectedLocation); + specPath = INTEGRATION_TEST_PATH.resolve(specLocation); + } + + public Path getOutputPath() { + return outputPath; + } + + public Path getSpecPath() { + return specPath; + } + + public Path getExpectedPath() { + return expectedPath; + } +} \ No newline at end of file diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/api/api.ts b/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/api/api.ts deleted file mode 100644 index 5cae4dbb428..00000000000 --- a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/api/api.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from '../api/UserApi'; - - diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/README.md b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/README.md similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/README.md rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/README.md diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/api/UserApi.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/UserApi.ts similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/api/UserApi.ts rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/UserApi.ts diff --git a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts new file mode 100644 index 00000000000..b261015b7e3 --- /dev/null +++ b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts @@ -0,0 +1,3 @@ +export * from './UserApi'; + + diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/index.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/index.ts similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/index.ts rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/index.ts diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/model/User.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/User.ts similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/model/User.ts rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/User.ts diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/model/models.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/models.ts similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/model/models.ts rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/models.ts diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/package.json b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/package.json similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/package.json rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/package.json diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/tsconfig.json b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/tsconfig.json similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/tsconfig.json rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/tsconfig.json diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/typings.json b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/typings.json similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-expected/typings.json rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/typings.json diff --git a/modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-spec.json b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-spec.json similarity index 100% rename from modules/swagger-codegen/src/test/resources/integrationtest/typescript/additional-properties-spec.json rename to modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-spec.json