Fix #32 - Generating assertions for map elements

This commit is contained in:
Jakub Kubrynski
2015-02-23 22:33:03 +01:00
parent 943516b70e
commit cd81251f37
2 changed files with 19 additions and 12 deletions

View File

@@ -45,21 +45,28 @@ class SpockMethodBodyBuilder {
blockBuilder.addLine('and:').startBlock()
blockBuilder.addLine('def responseBody = new JsonSlurper().parseText(response.body.asString())')
stubDefinition.response.body.serverValue.each {
def value = it.value
if (value instanceof String) {
if (value.startsWith('$')) {
value = value.substring(1).replaceAll('\\$value', "responseBody.$it.key")
blockBuilder.addLine(value)
} else {
blockBuilder.addLine("responseBody.$it.key == \"${value}\"")
}
} else {
blockBuilder.addLine("responseBody.$it.key == ${value}")
}
processBodyElement(blockBuilder, "", it)
}
}
blockBuilder.endBlock()
blockBuilder.endBlock()
}
private void processBodyElement(BlockBuilder blockBuilder, String rootProperty, def element) {
def value = element.value
String property = rootProperty + "." + element.key
if (value instanceof String) {
if (value.startsWith('$')) {
value = value.substring(1).replaceAll('\\$value', "responseBody$property")
blockBuilder.addLine(value)
} else {
blockBuilder.addLine("responseBody$property == \"${value}\"")
}
} else if (value instanceof Map) {
value.each { entry -> processBodyElement(blockBuilder, property, entry) }
} else {
blockBuilder.addLine("responseBody$property == ${value}")
}
}
}

View File

@@ -11,7 +11,7 @@ io.coderate.accurest.dsl.GroovyDsl.make {
}
"""
)
urlPattern $(client('/[0-9]{2}'), server('/12'))
url $(client('/[0-9]{2}'), server('/12'))
}
response {
status 200