diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy index 86a7bd47de..678331c5eb 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/SingleTestGenerator.groovy @@ -66,7 +66,7 @@ class SingleTestGenerator { boolean conditionalImportsAdded = false contracts.each { ParsedDsl key, TestType value -> if (!conditionalImportsAdded) { - if (value == TestType.HTTP) { + if (contracts.values().contains(TestType.HTTP)) { if (configProperties.testMode == TestMode.JAXRSCLIENT) { clazz.addStaticImport('javax.ws.rs.client.Entity.*') if (configProperties.targetFramework == TestFramework.JUNIT) { @@ -79,7 +79,7 @@ class SingleTestGenerator { } } if (configProperties.targetFramework == TestFramework.JUNIT) { - if (value == TestType.HTTP && configProperties.testMode == TestMode.MOCKMVC) { + if (contracts.values().contains(TestType.HTTP) && configProperties.testMode == TestMode.MOCKMVC) { clazz.addImport('com.jayway.restassured.module.mockmvc.specification.MockMvcRequestSpecification') clazz.addImport('com.jayway.restassured.response.ResponseOptions') } @@ -89,7 +89,7 @@ class SingleTestGenerator { if (configProperties.ruleClassForTests) { clazz.addImport('org.junit.Rule').addRule(configProperties.ruleClassForTests) } - if (value == TestType.MESSAGING) { + if (contracts.values().contains(TestType.MESSAGING)) { addMessagingRelatedEntries(clazz) } conditionalImportsAdded = true diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/builder/RequestProcessingMethodBodyBuilder.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/builder/RequestProcessingMethodBodyBuilder.groovy index 6f8232c68e..c26e09ab08 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/builder/RequestProcessingMethodBodyBuilder.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/builder/RequestProcessingMethodBodyBuilder.groovy @@ -38,7 +38,7 @@ abstract class RequestProcessingMethodBodyBuilder extends MethodBodyBuilder { @Override protected boolean hasGivenSection() { - return request.headers || request.body + return true } protected boolean allowedQueryParameter(QueryParameter param) { diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/SingleTestGeneratorSpec.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/SingleTestGeneratorSpec.groovy index 853ec184cf..6fbcac3f45 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/SingleTestGeneratorSpec.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/SingleTestGeneratorSpec.groovy @@ -85,5 +85,49 @@ class SingleTestGeneratorSpec extends Specification { SPOCK | ['import static javax.ws.rs.client.Entity.*;'] } + def "should work if there is messaging and rest in one folder #testFramework"() { + given: + File secondFile = tmpFolder.newFile() + secondFile.write(""" + io.codearte.accurest.dsl.GroovyDsl.make { + label 'some_label' + input { + messageFrom('delete') + messageBody([ + bookName: 'foo' + ]) + messageHeaders { + header('sample', 'header') + } + assertThat('bookWasDeleted()') + } + } + """) + and: + AccurestConfigProperties properties = new AccurestConfigProperties(); + properties.targetFramework = testFramework + Contract contract = new Contract(file.toPath(), true, 1, 2) + contract.ignored >> true + contract.order >> 2 + and: + Contract contract2 = new Contract(secondFile.toPath(), true, 1, 2) + contract2.ignored >> true + contract2.order >> 2 + and: + SingleTestGenerator testGenerator = new SingleTestGenerator(properties) + + when: + String clazz = testGenerator.buildClass([contract, contract2], "test", "test") + + then: + classStrings.each { clazz.contains(it) } + clazz.contains('@Inject AccurestMessaging') + + where: + testFramework | classStrings + JUNIT | jUnitClassStrings + SPOCK | spockClassStrings + } + } diff --git a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle index 5fffa182b2..8b476c9267 100644 --- a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle +++ b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/build.gradle @@ -55,6 +55,7 @@ dependencies { testCompile "org.spockframework:spock-spring:1.0-groovy-2.4" testCompile "org.springframework.boot:spring-boot-starter-test:${springBootVersion}" testCompile "ch.qos.logback:logback-classic:1.1.2" + testCompile 'com.jayway.restassured:spring-mock-mvc:2.9.0' // needed if you're going to use Spring MockMvc } accurest { @@ -109,4 +110,4 @@ test { testLogging { exceptionFormat = 'full' } -} \ No newline at end of file +} diff --git a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/repository/mappings/a_foo.groovy b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/repository/mappings/a_foo.groovy new file mode 100644 index 0000000000..6de37631ef --- /dev/null +++ b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/repository/mappings/a_foo.groovy @@ -0,0 +1,10 @@ +io.codearte.accurest.dsl.GroovyDsl.make { + request { + url '/foo' + method 'GET' + } + response { + status 200 + body 'bar' + } +} \ No newline at end of file diff --git a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/main/groovy/io/codearte/accurest/samples/book/IntegrationMessagingApplication.groovy b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/main/groovy/io/codearte/accurest/samples/book/IntegrationMessagingApplication.groovy index 820ec8f52e..ed28a54b59 100644 --- a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/main/groovy/io/codearte/accurest/samples/book/IntegrationMessagingApplication.groovy +++ b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/main/groovy/io/codearte/accurest/samples/book/IntegrationMessagingApplication.groovy @@ -3,11 +3,19 @@ package io.codearte.accurest.samples.book import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.context.annotation.ImportResource +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController @SpringBootApplication +@RestController @ImportResource("classpath*:integration-context.xml") class IntegrationMessagingApplication { + @RequestMapping("/foo") + String foo() { + return "bar" + } + static void main(String[] args) { SpringApplication.run(IntegrationMessagingApplication.class, args) } diff --git a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/groovy/io/codearte/accurest/samples/book/MessagingBaseSpec.groovy b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/groovy/io/codearte/accurest/samples/book/MessagingBaseSpec.groovy index 8d25db00f6..0beb893d51 100644 --- a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/groovy/io/codearte/accurest/samples/book/MessagingBaseSpec.groovy +++ b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/groovy/io/codearte/accurest/samples/book/MessagingBaseSpec.groovy @@ -4,6 +4,8 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.SpringApplicationContextLoader import org.springframework.test.context.ContextConfiguration import spock.lang.Specification +import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc + /** * @author Marcin Grzejszczak */ @@ -15,6 +17,10 @@ abstract class MessagingBaseSpec extends Specification { @Autowired BookService bookService @Autowired BookListener bookListener + def setup() { + RestAssuredMockMvc.standaloneSetup(new IntegrationMessagingApplication()) + } + void bookReturnedTriggered() { bookService.returnBook(new BookReturned("foo")) } diff --git a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/java/io/codearte/accurest/samples/book/MessagingBaseTest.java b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/java/io/codearte/accurest/samples/book/MessagingBaseTest.java index c5ee6bf196..47634cbf37 100644 --- a/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/java/io/codearte/accurest/samples/book/MessagingBaseTest.java +++ b/accurest-gradle-plugin/src/test/resources/functionalTest/messagingProject/src/test/java/io/codearte/accurest/samples/book/MessagingBaseTest.java @@ -2,10 +2,12 @@ package io.codearte.accurest.samples.book; import org.assertj.core.api.Assertions; import org.junit.runner.RunWith; +import org.junit.Before; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationContextLoader; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc; /** * @author Marcin Grzejszczak @@ -19,6 +21,11 @@ public abstract class MessagingBaseTest { @Autowired BookService bookService; @Autowired BookListener bookListener; + @Before + public void setup() { + RestAssuredMockMvc.standaloneSetup(new IntegrationMessagingApplication()); + } + public void bookReturnedTriggered() { bookService.returnBook(new BookReturned("foo")); }