Move YamlContractConverter list of available contract converters. (#684)
Great pointer and great pull request. Thanks a lot!
This commit is contained in:
committed by
Marcin Grzejszczak
parent
37c7878759
commit
0a28d0848d
@@ -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 {
|
||||
|
||||
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user