diff --git a/src/main/java/io/codearte/accurest/maven/GenerateSpecsMojo.java b/src/main/java/io/codearte/accurest/maven/GenerateSpecsMojo.java
new file mode 100644
index 0000000000..aba7bb50b2
--- /dev/null
+++ b/src/main/java/io/codearte/accurest/maven/GenerateSpecsMojo.java
@@ -0,0 +1,47 @@
+package io.codearte.accurest.maven;
+
+import static java.lang.String.format;
+
+import java.io.File;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import io.codearte.accurest.AccurestException;
+import io.codearte.accurest.TestGenerator;
+import io.codearte.accurest.config.AccurestConfigProperties;
+
+@Mojo(name = "generateSpecs", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES)
+public class GenerateSpecsMojo extends AbstractMojo {
+
+ @Parameter(defaultValue = "${basedir}")
+ protected File baseDir;
+
+ @Parameter(defaultValue = "${project.build.directory}")
+ protected File projectBuildDirectory;
+
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ AccurestConfigProperties config = new AccurestConfigProperties();
+
+ config.setContractsDslDir(new File(baseDir, "/src/test/resources/stubs"));
+ config.setBasePackageForTests("io.codearte.accurest.tests");
+ config.setGeneratedTestSourcesDir(new File(projectBuildDirectory, "/generated-sources/accurest"));
+
+ getLog().info("Accurest Plugin: Invoking test sources generation");
+ getLog().info(format("Registering %s as test source directory", config.getGeneratedTestSourcesDir()));
+
+ try {
+ TestGenerator generator = new TestGenerator(config);
+ int generatedClasses = generator.generate();
+ getLog().info(String.format("Generated %s test classes.", generatedClasses));
+ } catch (AccurestException e) {
+ throw new MojoExecutionException(format("Accurest Plugin exception: %s", e.getMessage()), e);
+ }
+
+ }
+
+}
diff --git a/src/main/java/io/codearte/accurest/maven/GenerateStubsMojo.java b/src/main/java/io/codearte/accurest/maven/GenerateStubsMojo.java
index 499311cf65..5ba6ed76fb 100644
--- a/src/main/java/io/codearte/accurest/maven/GenerateStubsMojo.java
+++ b/src/main/java/io/codearte/accurest/maven/GenerateStubsMojo.java
@@ -26,30 +26,15 @@ public class GenerateStubsMojo extends AbstractMojo {
private String mappingsDir = "mappings";
public void execute() throws MojoExecutionException, MojoFailureException {
- getLog().info("");
- getLog().info("*** Accurest Maven Plugin ***");
- getLog().info("");
+ AccurestConfigProperties config = new AccurestConfigProperties();
+ config.setContractsDslDir(new File(baseDir, "/src/test/resources/stubs"));
+ config.setStubsOutputDir(new File(projectBuildDirectory, mappingsDir));
- File stubsOutputDir = new File(projectBuildDirectory, mappingsDir);
-
- getLog().info("baseDir = " + baseDir);
- getLog().info("projectBuildDirectory = " + projectBuildDirectory);
- getLog().info("mappings = " + mappingsDir);
-
- AccurestConfigProperties configProperties = new AccurestConfigProperties();
-
- File contractsDslDir = new File(baseDir, "/src/test/resources/stubs");
-
- configProperties.setContractsDslDir(contractsDslDir);
- configProperties.setBasePackageForTests("io.codearte.accurest.tests");
- configProperties.setStubsOutputDir(stubsOutputDir);
getLog().info("Accurest Plugin: Invoking GroovyDSL to WireMock client stubs conversion");
- getLog().info(String.format("From '%s' to '%s'", contractsDslDir, stubsOutputDir));
+ getLog().info(String.format("From '%s' to '%s'", config.getContractsDslDir(), config.getStubsOutputDir()));
- RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(),
- configProperties);
+ RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(), config);
converter.processFiles();
-
}
}
diff --git a/src/test/java/io/codearte/accurest/maven/PluginIntegrationTest.java b/src/test/java/io/codearte/accurest/maven/PluginIntegrationTest.java
index 839ddb36a6..a786df3778 100644
--- a/src/test/java/io/codearte/accurest/maven/PluginIntegrationTest.java
+++ b/src/test/java/io/codearte/accurest/maven/PluginIntegrationTest.java
@@ -25,12 +25,19 @@ public class PluginIntegrationTest {
}
@Test
- public void test() throws Exception {
+ public void shouldCreateStubs() throws Exception {
File basedir = resources.getBasedir("basic-with-execution");
maven.forProject(basedir)
.withCliOption("-X")
.execute("package")
- .assertErrorFreeLog()
.assertLogText("Accurest Plugin: Invoking GroovyDSL to WireMock client stubs conversion");
}
+
+ @Test
+ public void shouldCreateSpecs() throws Exception {
+ File basedir = resources.getBasedir("basic-with-execution");
+ maven.forProject(basedir)
+ .execute("package")
+ .assertLogText("Accurest Plugin: Invoking test sources generation");
+ }
}
\ No newline at end of file
diff --git a/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java b/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java
index 1d402cf58e..d1e0bf696c 100644
--- a/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java
+++ b/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java
@@ -19,17 +19,24 @@ public class PluginUnitTest {
public final TestMavenRuntime maven = new TestMavenRuntime();
@Test
- public void shouldGenerateWarlockStubsInDefaultLocation() throws Exception {
+ public void shouldGenerateWiremockStubsInDefaultcLocation() throws Exception {
File basedir = resources.getBasedir("basic");
maven.executeMojo(basedir, "generateStubs");
assertFilesPresent(basedir, "target/mappings/Sample.json");
}
@Test
- public void shouldGenerateWarlockStubsInSelectedLocation() throws Exception {
+ public void shouldGenerateWiremockStubsInSelectedLocation() throws Exception {
File basedir = resources.getBasedir("basic");
maven.executeMojo(basedir, "generateStubs", TestMavenRuntime.newParameter("mappingsDir", "foo"));
assertFilesPresent(basedir, "target/foo/Sample.json");
}
+ @Test
+ public void shouldGenerateContractSpecificationInDefaultLocation() throws Exception {
+ File basedir = resources.getBasedir("basic");
+ maven.executeMojo(basedir, "generateSpecs");
+ assertFilesPresent(basedir,
+ "target/generated-sources/accurest/io/codearte/accurest/tests/AccurestSpec.groovy");
+ }
}
diff --git a/src/test/projects/basic-with-execution/pom.xml b/src/test/projects/basic-with-execution/pom.xml
index 3cbb096806..2238e43e53 100644
--- a/src/test/projects/basic-with-execution/pom.xml
+++ b/src/test/projects/basic-with-execution/pom.xml
@@ -7,6 +7,45 @@
sample-project
0.1
+
+
+
+ org.spockframework
+ spock-core
+ 1.0-groovy-2.4
+ test
+
+
+ com.jayway.restassured
+ rest-assured
+ 2.9.0
+ test
+
+
+ com.jayway.restassured
+ spring-mock-mvc
+ 2.9.0
+ test
+
+
+ com.github.tomakehurst
+ wiremock
+ 2.0.4-beta
+ test
+
+
+ com.toomuchcoding.jsonassert
+ jsonassert
+ 0.2.2
+ test
+
+
+ org.assertj
+ assertj-core
+ 2.3.0
+
+
+
@@ -18,10 +57,42 @@
generateStubs
+ generateSpecs
+
+ org.codehaus.gmavenplus
+ gmavenplus-plugin
+ 1.5
+
+
+
+ testCompile
+
+
+
+
+
+
+ ${project.build.directory}/generated-sources/accurest
+
+ **/*.groovy
+
+
+
+
+
+
+ maven-surefire-plugin
+ 2.19
+
+
+ **/*Spec.java
+
+
+
\ No newline at end of file