diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBodyBuilder.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBodyBuilder.groovy index 36191035ef..c913d97acf 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBodyBuilder.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBodyBuilder.groovy @@ -26,7 +26,7 @@ class MockMvcSpockMethodBodyBuilder extends SpockMethodBodyBuilder { bb.addLine(".header('${getTestSideValue(header.name)}', '${getTestSideValue(header.serverValue)}')") } if (request.body) { - bb.addLine(".body('$bodyAsString')") + bb.addLine(".body('''$bodyAsString''')") } bb.unindent() } diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBuilderSpec.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBuilderSpec.groovy index a762d57045..7a87a965d0 100644 --- a/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBuilderSpec.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/builder/MockMvcSpockMethodBuilderSpec.groovy @@ -3,6 +3,7 @@ package io.codearte.accurest.builder import io.codearte.accurest.dsl.GroovyDsl import io.codearte.accurest.dsl.WireMockStubStrategy import io.codearte.accurest.dsl.WireMockStubVerifier +import org.codehaus.groovy.control.CompilationFailedException import spock.lang.Issue import spock.lang.Specification import spock.lang.Unroll @@ -91,7 +92,7 @@ class MockMvcSpockMethodBuilderSpec extends Specification implements WireMockStu when: builder.appendTo(blockBuilder) then: - blockBuilder.toString().contains(".body('{\"items\":[\"HOP\"]}')") + blockBuilder.toString().contains(".body('''{\"items\":[\"HOP\"]}''')") and: stubMappingIsValidWireMockStub(new WireMockStubStrategy(contractDsl).toWireMockClientStub()) } @@ -116,7 +117,7 @@ class MockMvcSpockMethodBuilderSpec extends Specification implements WireMockStu when: builder.appendTo(blockBuilder) then: - blockBuilder.toString().contains(".body('property1=VAL1')") + blockBuilder.toString().contains(".body('''property1=VAL1''')") and: stubMappingIsValidWireMockStub(new WireMockStubStrategy(contractDsl).toWireMockClientStub()) } @@ -399,7 +400,7 @@ class MockMvcSpockMethodBuilderSpec extends Specification implements WireMockStu builder.appendTo(blockBuilder) def spockTest = blockBuilder.toString() then: - spockTest.contains(".body('')") + spockTest.contains(".body('''''')") and: stubMappingIsValidWireMockStub(new WireMockStubStrategy(contractDsl).toWireMockClientStub()) } @@ -814,4 +815,29 @@ class MockMvcSpockMethodBuilderSpec extends Specification implements WireMockStu !spockTest.contains("\\u041f") } + @Issue('177') + def "should generate proper test code when having multiline body"() { + given: + GroovyDsl contractDsl = GroovyDsl.make { + request { + method "PUT" + url "/multiline" + body('''hello, +World.''') + } + response { + status 200 + } + } + MockMvcSpockMethodBodyBuilder builder = new MockMvcSpockMethodBodyBuilder(contractDsl) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.given(blockBuilder) + def spockTest = blockBuilder.toString() + new GroovyShell(this.class.classLoader).evaluate("""import static com.jayway.restassured.module.mockmvc.RestAssuredMockMvc.* +$spockTest""") + then: + notThrown(CompilationFailedException) + } + } diff --git a/build.gradle b/build.gradle index 42d265f044..4b59672fc8 100644 --- a/build.gradle +++ b/build.gradle @@ -74,6 +74,7 @@ project(':accurest-core') { compile "com.github.tomakehurst:wiremock:$wiremockVersion" testCompile 'cglib:cglib-nodep:2.2' testCompile 'org.objenesis:objenesis:2.1' + testCompile 'com.jayway.restassured:spring-mock-mvc:2.5.0' testCompile project(':accurest-testing-utils') }