Fixed missing L for longs in messaging; fixes gh-1052

This commit is contained in:
Marcin Grzejszczak
2019-11-08 10:48:01 +01:00
parent 746fff410d
commit 1128449c2d
3 changed files with 35 additions and 2 deletions

View File

@@ -115,8 +115,9 @@ class JUnitMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder {
@Override
protected void processHeaderElement(BlockBuilder blockBuilder, String property, Number value) {
blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).isNotNull();")
String valueToSet = value instanceof Long ? value.toString() + "L" : value.toString()
blockBuilder.
addLine("assertThat(response.getHeader(\"$property\")).isEqualTo(${value});")
addLine("assertThat(response.getHeader(\"$property\")).isEqualTo(${valueToSet});")
}
@Override

View File

@@ -97,7 +97,8 @@ class SpockMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder {
@Override
protected void processHeaderElement(BlockBuilder blockBuilder, String property, Number value) {
blockBuilder.addLine("response.getHeader('$property') == ${value}")
String valueToSet = value instanceof Long ? value.toString() + "L" : value.toString()
blockBuilder.addLine("response.getHeader('$property') == ${valueToSet}")
}
@Override

View File

@@ -3002,4 +3002,35 @@ DocumentContext parsedJson = JsonPath.parse(json);
JaxRsClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) }
WebTestClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new WebTestClientJUnitMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) }
}
@Issue('#1052')
def 'should work with large numbers [#methodBuilderName]'() {
given:
Contract contractDsl = Contract.make {
label 'storage_object_created'
input {
triggeredBy('createStorageObject()')
}
outputMessage {
sentTo('document_uploads')
headers {
header('objectGeneration', 23094823904823)
}
}
}
MethodBodyBuilder builder = methodBuilder(contractDsl)
BlockBuilder blockBuilder = new BlockBuilder(" ")
and:
builder.appendTo(blockBuilder)
String test = blockBuilder.toString()
when:
SyntaxChecker.tryToRun(methodBuilderName, test.join("\n"))
then:
test.contains('''23094823904823L''')
where:
methodBuilderName | methodBuilder
SpockMessagingMethodBodyBuilder.simpleName | { Contract dsl -> new SpockMessagingMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) }
JUnitMessagingMethodBodyBuilder.simpleName | { Contract dsl -> new JUnitMessagingMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) }
}
}