Extracted framework configuration to enum
This commit is contained in:
@@ -16,25 +16,16 @@ class ClassBuilder {
|
||||
private final List<String> staticImports = []
|
||||
private final List<String> rules = []
|
||||
private final List<MethodBuilder> 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) {
|
||||
|
||||
@@ -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('}')
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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?
|
||||
|
||||
Reference in New Issue
Block a user