diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy index 7bf11cc9ee..912740b83f 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy @@ -16,25 +16,16 @@ class ClassBuilder { private final List staticImports = [] private final List rules = [] private final List methods = [] - private final String modifier - private final String suffix + private final TestFramework lang private ClassBuilder(String className, String packageName, String baseClass, TestFramework lang) { + this.lang = lang if (baseClass) { imports << baseClass } this.baseClass = NamesUtil.afterLastDot(baseClass) this.packageName = packageName this.className = className - switch (lang) { - case TestFramework.JUNIT: - modifier = "public " - suffix = ";" - break - case TestFramework.SPOCK: - modifier = "" - suffix = "" - } } static ClassBuilder createClass(String className, String classPackage, AccurestConfigProperties properties) { @@ -70,24 +61,24 @@ class ClassBuilder { String build() { BlockBuilder clazz = new BlockBuilder("\t") - .addLine("package $packageName$suffix") + .addLine("package $packageName$lang.lineSuffix") .addEmptyLine() imports.sort().each { - clazz.addLine("import $it$suffix") + clazz.addLine("import $it$lang.lineSuffix") } if (!imports.empty) { clazz.addEmptyLine() } staticImports.sort().each { - clazz.addLine("import static $it$suffix") + clazz.addLine("import static $it$lang.lineSuffix") } if (!staticImports.empty) { clazz.addEmptyLine() } - def classLine = "${modifier}class $className" + def classLine = "${lang.classModifier}class $className" if (baseClass) { classLine += " extends $baseClass" } @@ -97,7 +88,7 @@ class ClassBuilder { clazz.startBlock() rules.sort().each { clazz.addLine("@Rule") - clazz.addLine("public $it ${NamesUtil.camelCase(it)} = new $it()$suffix") + clazz.addLine("public $it ${NamesUtil.camelCase(it)} = new $it()$lang.lineSuffix") } clazz.endBlock() if (!rules.empty) { diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy index 60cd6a074b..951d1ebd5d 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy @@ -26,14 +26,10 @@ class MethodBuilder { } void appendTo(BlockBuilder blockBuilder) { - String modifier if (lang == TestFramework.JUNIT) { blockBuilder.addLine('@Test') - modifier = "public void " - } else { - modifier = "def " } - blockBuilder.addLine(modifier + "$methodName() {") + blockBuilder.addLine(lang.methodModifier + "$methodName() {") new SpockMethodBodyBuilder(stubContent).appendTo(blockBuilder) blockBuilder.addLine('}') } diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/config/TestFramework.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/config/TestFramework.groovy index 1a468b1fcb..82e3b3ac90 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/config/TestFramework.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/config/TestFramework.groovy @@ -4,5 +4,27 @@ package io.coderate.accurest.config * @author Jakub Kubrynski */ enum TestFramework { - JUNIT, SPOCK + JUNIT("public ", "public void ", ";"), SPOCK("", "def ", "") + + private final String classModifier + private final String methodModifier + private final String lineSuffix + + TestFramework(String classModifier, String methodModifier, String lineSuffix) { + this.classModifier = classModifier + this.lineSuffix = lineSuffix + this.methodModifier = methodModifier + } + + String getClassModifier() { + return classModifier + } + + String getMethodModifier() { + return methodModifier + } + + String getLineSuffix() { + return lineSuffix + } } \ No newline at end of file diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/MainTest.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/MainTest.groovy index 76c4256cb5..19e1914a8a 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/MainTest.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/MainTest.groovy @@ -7,9 +7,11 @@ import io.coderate.accurest.config.TestMode class MainTest { public static void main(String[] args) { - AccurestConfigProperties properties = new AccurestConfigProperties(stubsBaseDirectory: '/home/devel/workspace/accurest/accurest-core/src/main/resources/stubs', + AccurestConfigProperties properties = new AccurestConfigProperties( + stubsBaseDirectory: '/home/devel/projects/codearte/accurest/accurest-core/src/main/resources/stubs', + generatedTestSourcesDir: '/tmp/accurest', targetFramework: TestFramework.SPOCK, testMode: TestMode.MOCKMVC, basePackageForTests: 'io.test', - staticImports: ['com.pupablada.Test.*'], imports: ['org.innapypa.Test'], ignoredFiles: ["**/different/some.json", "**/other"]) + staticImports: ['com.pupablada.Test.*'], imports: ['org.innapypa.Test'], ignoredFiles: ["**/other"]) println new TestGenerator(properties).generate() } } diff --git a/accurest-gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/GenerateServerTestsTask.groovy b/accurest-gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/GenerateServerTestsTask.groovy index 124c226fe4..cc0c2b288e 100644 --- a/accurest-gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/GenerateServerTestsTask.groovy +++ b/accurest-gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/GenerateServerTestsTask.groovy @@ -5,11 +5,13 @@ import io.coderate.accurest.TestGenerator import io.coderate.accurest.config.AccurestConfigProperties import org.gradle.api.DefaultTask import org.gradle.api.GradleException +import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction class GenerateServerTestsTask extends DefaultTask { + @InputDirectory File groovyDslDir @OutputDirectory File generatedTestSourcesDir //TODO: How to deal with @Input*, @Output* and that domain object?