Move YamlContractConverter list of available contract converters. (#684)

Great pointer and great pull request. Thanks a lot!
This commit is contained in:
SvenBayer
2018-07-09 08:52:19 +02:00
committed by Marcin Grzejszczak
parent 37c7878759
commit 0a28d0848d
3 changed files with 55 additions and 2 deletions

View File

@@ -88,6 +88,7 @@ class ContractFileScanner {
*/
private void appendRecursively(File baseDir, ListMultimap<Path, ContractMetadata> result) {
List<ContractConverter> converters = converters()
converters.add(YamlContractConverter.INSTANCE)
if (log.isTraceEnabled()) {
log.trace("Found the following contract converters ${converters}")
}
@@ -104,8 +105,6 @@ class ContractFileScanner {
boolean included = includeMatcher ? file.absolutePath.matches(includeMatcher) : true
if (contractFile && included) {
addContractToTestGeneration(result, files, file, i, ContractVerifierDslConverter.convertAsCollection(baseDir, file))
} else if (YamlContractConverter.INSTANCE.isAccepted(file) && included) {
addContractToTestGeneration(result, files, file, i, YamlContractConverter.INSTANCE.convertFrom(file))
} else if (!contractFile && included) {
addContractToTestGeneration(converters, result, files, file, i)
} else {

View File

@@ -108,4 +108,42 @@ class ContractFileScannerSpec extends Specification {
result.entries().every { it.value.convertedContract }
result.entries().find { it.value.convertedContract.any { it.request.method.clientValue == "PUT" } }
}
def "should prefer custom yaml converter over standard yaml converter"() {
given:
File baseDir = new File(this.getClass().getResource("/directory/with/custom/yml").toURI())
ContractFileScanner scanner = new ContractFileScanner(baseDir, null, null) {
@Override
protected List<ContractConverter> converters() {
return [new ContractConverter() {
@Override
boolean isAccepted(File file) {
if (!file.name.endsWith(".yml") && !file.name.endsWith(".yaml")) {
return false
}
String line
file.withReader {
line = it.readLine()
}
return line != null && line.startsWith("custom_format: 1.0")
}
@Override
Collection<Contract> convertFrom(File file) {
return Collections.singleton(Contract.newInstance())
}
@Override
Object convertTo(Collection contract) {
return new Object()
}
}]
}
}
when:
ListMultimap<Path, ContractMetadata> result = scanner.findContracts()
then:
result.keySet().size() == 1
result.entries().every { it.value.convertedContract }
}
}

View File

@@ -0,0 +1,16 @@
custom_format: 1.0
outbound:
request:
url: /foo
method: PUT
headers:
foo: bar
body:
foo: bar
inbound:
response:
status: 200
headers:
foo2: bar
body:
foo2: bar