Added support for junit rules
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
accurest
|
||||
========
|
||||
Accurate REST
|
||||
=============
|
||||
Consumer Driven Contracts verifier for Java
|
||||
4
pom.xml
4
pom.xml
@@ -4,8 +4,8 @@
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>eu.codearte.contract-keeper</groupId>
|
||||
<artifactId>contract-keeper</artifactId>
|
||||
<groupId>eu.codearte.accurest</groupId>
|
||||
<artifactId>accurest</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
|
||||
19
src/main/groovy/eu/coderate/accurest/Generator.groovy
Normal file
19
src/main/groovy/eu/coderate/accurest/Generator.groovy
Normal file
@@ -0,0 +1,19 @@
|
||||
package eu.coderate.accurest
|
||||
|
||||
import static eu.coderate.accurest.builder.ClassBuilder.createClass
|
||||
import static eu.coderate.accurest.builder.MethodBuilder.createVoidMethod
|
||||
|
||||
class Generator {
|
||||
|
||||
public static void main(String[] args) {
|
||||
print createClass('MyTest', 'io.test', "com.test.BaseClass")
|
||||
.addImport('org.junit.Test')
|
||||
.addImport('org.junit.Rule')
|
||||
.addStaticImport('org.hamcrest.Matchers.*')
|
||||
.addStaticImport('com.jayway.restassured.RestAssured.*')
|
||||
.addStaticImport('com.jayway.restassured.matcher.RestAssuredMatchers.*')
|
||||
.addRule('com.test.MyRule')
|
||||
.addMethod(createVoidMethod('shouldInvokeService'))
|
||||
.build()
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package eu.coderate.ck.builder
|
||||
package eu.coderate.accurest.builder
|
||||
|
||||
import groovy.transform.PackageScope
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
package eu.coderate.ck.builder
|
||||
package eu.coderate.accurest.builder
|
||||
|
||||
import eu.coderate.accurest.util.NamesUtil
|
||||
|
||||
/**
|
||||
* @author Jakub Kubrynski
|
||||
@@ -7,17 +9,27 @@ class ClassBuilder {
|
||||
|
||||
private final String className
|
||||
private final String packageName
|
||||
private final String baseClass
|
||||
private final List<String> imports = []
|
||||
private final List<String> staticImports = []
|
||||
private final List<String> rules = []
|
||||
private final List<MethodBuilder> methods = []
|
||||
|
||||
private ClassBuilder(String className, String packageName) {
|
||||
private ClassBuilder(String className, String packageName, String baseClass) {
|
||||
if (baseClass) {
|
||||
imports << baseClass
|
||||
}
|
||||
this.baseClass = NamesUtil.getName(baseClass)
|
||||
this.packageName = packageName
|
||||
this.className = className
|
||||
}
|
||||
|
||||
static ClassBuilder createClass(String className, String packageName) {
|
||||
return new ClassBuilder(className, packageName)
|
||||
return createClass(className, packageName, null)
|
||||
}
|
||||
|
||||
static ClassBuilder createClass(String className, String packageName, String baseClass) {
|
||||
return new ClassBuilder(className, packageName, baseClass)
|
||||
}
|
||||
|
||||
ClassBuilder addImport(String importToAdd) {
|
||||
@@ -35,20 +47,40 @@ class ClassBuilder {
|
||||
return this
|
||||
}
|
||||
|
||||
ClassBuilder addRule(String ruleClass) {
|
||||
imports << ruleClass
|
||||
rules << NamesUtil.getName(ruleClass)
|
||||
return this
|
||||
}
|
||||
|
||||
String build() {
|
||||
BlockBuilder clazz = new BlockBuilder(" ")
|
||||
.addLine("package $packageName;")
|
||||
.addEmptyLine()
|
||||
|
||||
imports.sort().each {
|
||||
clazz.addLine("import $it;")
|
||||
}
|
||||
clazz.addEmptyLine()
|
||||
|
||||
staticImports.sort().each {
|
||||
clazz.addLine("static import $it;")
|
||||
}
|
||||
clazz.addEmptyLine()
|
||||
|
||||
clazz.addLine("public class $className {")
|
||||
def classLine = "public class $className"
|
||||
if (baseClass) {
|
||||
classLine += " extends $baseClass"
|
||||
}
|
||||
clazz.addLine(classLine + ' {')
|
||||
clazz.addEmptyLine()
|
||||
|
||||
clazz.startBlock()
|
||||
rules.sort().each {
|
||||
clazz.addLine("@Rule")
|
||||
clazz.addLine("public " + it + " " + NamesUtil.fieldName(it) + " = new $it();")
|
||||
}
|
||||
clazz.endBlock()
|
||||
clazz.addEmptyLine()
|
||||
|
||||
methods.each {
|
||||
@@ -1,4 +1,4 @@
|
||||
package eu.coderate.ck.builder
|
||||
package eu.coderate.accurest.builder
|
||||
|
||||
/**
|
||||
* @author Jakub Kubrynski
|
||||
22
src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy
Normal file
22
src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy
Normal file
@@ -0,0 +1,22 @@
|
||||
package eu.coderate.accurest.util
|
||||
|
||||
/**
|
||||
* @author Jakub Kubrynski
|
||||
*/
|
||||
class NamesUtil {
|
||||
static String getName(String qualifiedName) {
|
||||
if (qualifiedName?.indexOf('.') > -1) {
|
||||
return qualifiedName.substring(qualifiedName.lastIndexOf('.')+1)
|
||||
}
|
||||
return qualifiedName
|
||||
}
|
||||
|
||||
static String fieldName(String className) {
|
||||
if (className) {
|
||||
return className
|
||||
}
|
||||
String name = getName(className)
|
||||
String firstChar = name.charAt(0).toLowerCase() as String
|
||||
return firstChar + name.substring(1)
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package eu.coderate.ck
|
||||
|
||||
import static eu.coderate.ck.builder.ClassBuilder.createClass
|
||||
import static eu.coderate.ck.builder.MethodBuilder.createVoidMethod
|
||||
|
||||
class Generator {
|
||||
|
||||
public static void main(String[] args) {
|
||||
print createClass('MyTest', 'io.test')
|
||||
.addImport('org.junit.Test')
|
||||
.addStaticImport('org.hamcrest.CoreMatchers.*')
|
||||
.addStaticImport('com.jayway.restassured.RestAssured.*')
|
||||
.addMethod(createVoidMethod('shouldInvokeService'))
|
||||
.build()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user