From c6a75b7dcfa200000de19ccb3404ed61a87f73af Mon Sep 17 00:00:00 2001 From: Jakub Kubrynski Date: Sun, 7 Dec 2014 00:00:06 +0100 Subject: [PATCH] Introduced configuration --- .../eu/coderate/accurest/Generator.groovy | 19 ------- .../eu/coderate/accurest/TestGenerator.groovy | 49 +++++++++++++++++++ .../accurest/builder/ClassBuilder.groovy | 6 +-- .../coderate/accurest/util/NamesUtil.groovy | 32 ++++++++---- src/main/resources/wiremocks/sample.json | 13 +++++ src/main/resources/wiremocks/shouldFail.json | 9 ++++ 6 files changed, 97 insertions(+), 31 deletions(-) delete mode 100644 src/main/groovy/eu/coderate/accurest/Generator.groovy create mode 100644 src/main/groovy/eu/coderate/accurest/TestGenerator.groovy create mode 100644 src/main/resources/wiremocks/sample.json create mode 100644 src/main/resources/wiremocks/shouldFail.json diff --git a/src/main/groovy/eu/coderate/accurest/Generator.groovy b/src/main/groovy/eu/coderate/accurest/Generator.groovy deleted file mode 100644 index c8f875643e..0000000000 --- a/src/main/groovy/eu/coderate/accurest/Generator.groovy +++ /dev/null @@ -1,19 +0,0 @@ -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() - } -} \ No newline at end of file diff --git a/src/main/groovy/eu/coderate/accurest/TestGenerator.groovy b/src/main/groovy/eu/coderate/accurest/TestGenerator.groovy new file mode 100644 index 0000000000..24d122df72 --- /dev/null +++ b/src/main/groovy/eu/coderate/accurest/TestGenerator.groovy @@ -0,0 +1,49 @@ +package eu.coderate.accurest + +import eu.coderate.accurest.util.NamesUtil + +import static eu.coderate.accurest.builder.ClassBuilder.createClass +import static eu.coderate.accurest.builder.MethodBuilder.createVoidMethod + +/** + * @author Jakub Kubrynski + */ +class TestGenerator { + + private final String mocksBaseDirectory + private final String basePackageForTests + private final String baseClassForTests + private final String ruleClassForTests + + TestGenerator(String mocksBaseDirectory, String basePackageForTests, String baseClassForTests, String ruleClassForTests) { + this.mocksBaseDirectory = getClass().getClassLoader().getResource(mocksBaseDirectory).path + this.basePackageForTests = basePackageForTests + this.baseClassForTests = baseClassForTests + this.ruleClassForTests = ruleClassForTests + } + + public String generate() { + StringBuilder builder = new StringBuilder() + List files = new File(mocksBaseDirectory).list() + files.each { + builder << addClass(NamesUtil.capitalize(NamesUtil.toLastDot(it))) + } + return builder + } + + private String addClass(String className) { + createClass(className, basePackageForTests, baseClassForTests) + .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() + } + + public static void main(String[] args) { + print new TestGenerator("wiremocks", 'io.test', 'com.test.BaseClass', "").generate() + } +} \ No newline at end of file diff --git a/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy b/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy index ad517a5c96..32296dd222 100644 --- a/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy +++ b/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy @@ -19,7 +19,7 @@ class ClassBuilder { if (baseClass) { imports << baseClass } - this.baseClass = NamesUtil.getName(baseClass) + this.baseClass = NamesUtil.afterLastDot(baseClass) this.packageName = packageName this.className = className } @@ -49,7 +49,7 @@ class ClassBuilder { ClassBuilder addRule(String ruleClass) { imports << ruleClass - rules << NamesUtil.getName(ruleClass) + rules << NamesUtil.afterLastDot(ruleClass) return this } @@ -78,7 +78,7 @@ class ClassBuilder { clazz.startBlock() rules.sort().each { clazz.addLine("@Rule") - clazz.addLine("public " + it + " " + NamesUtil.fieldName(it) + " = new $it();") + clazz.addLine("public " + it + " " + NamesUtil.uncapitalize(it) + " = new $it();") } clazz.endBlock() clazz.addEmptyLine() diff --git a/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy b/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy index ff9215477a..530febc6d0 100644 --- a/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy +++ b/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy @@ -4,19 +4,33 @@ 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) + static String afterLastDot(String string) { + if (string?.indexOf('.') > -1) { + return string.substring(string.lastIndexOf('.')+1) } - return qualifiedName + return string } - static String fieldName(String className) { - if (className) { + static String uncapitalize(String className) { + if (!className) { return className } - String name = getName(className) - String firstChar = name.charAt(0).toLowerCase() as String - return firstChar + name.substring(1) + String firstChar = className.charAt(0).toLowerCase() as String + return firstChar + className.substring(1) + } + + static String capitalize(String className) { + if (!className) { + return className + } + String firstChar = className.charAt(0).toUpperCase() as String + return firstChar + className.substring(1) + } + + static String toLastDot(String string) { + if (string?.indexOf('.') > -1) { + return string.substring(0, string.lastIndexOf('.')) + } + return string } } diff --git a/src/main/resources/wiremocks/sample.json b/src/main/resources/wiremocks/sample.json new file mode 100644 index 0000000000..1f97ce2a57 --- /dev/null +++ b/src/main/resources/wiremocks/sample.json @@ -0,0 +1,13 @@ +{ + "request": { + "method": "GET", + "url": "/some/thing" + }, + "response": { + "status": 200, + "body": "Hello world!", + "headers": { + "Content-Type": "text/plain" + } + } +} \ No newline at end of file diff --git a/src/main/resources/wiremocks/shouldFail.json b/src/main/resources/wiremocks/shouldFail.json new file mode 100644 index 0000000000..57926656a3 --- /dev/null +++ b/src/main/resources/wiremocks/shouldFail.json @@ -0,0 +1,9 @@ +{ + "request": { + "method": "GET", + "url": "/some/thing2" + }, + "response": { + "status": 400 + } +} \ No newline at end of file