diff --git a/languages/ramldoc/src/main/kotlin/io/vrap/codegen/languages/ramldoc/extensions/VrapExtensions.kt b/languages/ramldoc/src/main/kotlin/io/vrap/codegen/languages/ramldoc/extensions/VrapExtensions.kt index 154e8ee4..512f119f 100644 --- a/languages/ramldoc/src/main/kotlin/io/vrap/codegen/languages/ramldoc/extensions/VrapExtensions.kt +++ b/languages/ramldoc/src/main/kotlin/io/vrap/codegen/languages/ramldoc/extensions/VrapExtensions.kt @@ -156,7 +156,7 @@ fun Example.renderExample(exampleName: String, inlineExample: Boolean = false): | <<${this.description.value.trim()}>>""" else ""}${if (this.annotations.isNotEmpty()) """ | <<${this.annotations.joinToString("\n") { it.renderAnnotation() }}>>""" else ""} | strict: ${this.strict.value} - | value:${if (!inlineExample) " !include ../examples/$exampleName.json" else if (this.value is ObjectInstance) """| + | value:${if (!inlineExample) " !include ../examples/$exampleName.json" else if (this.value is ObjectInstance || this.value is ArrayInstance) """ \| | <<${this.value.toJson().escapeAll()}>>""".trimMargin().keepAngleIndent().escapeAll() else " " + this.value.toJson().escapeAll() } """.trimMargin().keepAngleIndent().escapeAll() } diff --git a/languages/ramldoc/src/test/kotlin/io/vrap/codegen/languages/ramldoc/TestCodeGenerator.kt b/languages/ramldoc/src/test/kotlin/io/vrap/codegen/languages/ramldoc/TestCodeGenerator.kt index ff0227de..9c82c12e 100644 --- a/languages/ramldoc/src/test/kotlin/io/vrap/codegen/languages/ramldoc/TestCodeGenerator.kt +++ b/languages/ramldoc/src/test/kotlin/io/vrap/codegen/languages/ramldoc/TestCodeGenerator.kt @@ -126,7 +126,7 @@ class TestCodeGenerator { examples: default: strict: true - value: + value: | { "predicate" : "lineItem = \"SKU\"" } @@ -158,7 +158,7 @@ class TestCodeGenerator { examples: default: strict: true - value: + value: | { "foo" : "bar" } @@ -188,7 +188,7 @@ class TestCodeGenerator { examples: default: strict: true - value: + value: | { "foo" : "bar" } @@ -305,6 +305,32 @@ class TestCodeGenerator { """.trimIndent().trimStart()) } + @Test + fun testArrayExampleRenderUsesMultilineBlock() { + val generatorConfig = CodeGeneratorConfig( + basePackageName = "com/commercetools/importer", + outputFolder = Paths.get("build/gensrc"), + inlineExamples = true + ) + + val apiProvider = RamlApiProvider(Paths.get("src/test/resources/arrayexample.raml")) + + val dataSink = MemoryDataSink() + val generatorModule = RamlGeneratorModule(apiProvider, generatorConfig, RamldocBaseTypes, dataSink = dataSink) + val generatorComponent = RamlGeneratorComponent(generatorModule, RamldocModelModule) + generatorComponent.generateFiles() + + Assertions.assertThat(dataSink.files).isNotEmpty() + val resourceContent = dataSink.files.entries + .filter { it.key.startsWith("resources/") } + .map { it.value } + .joinToString("\n") + Assertions.assertThat(resourceContent).isNotBlank() + Assertions.assertThat(resourceContent) + .contains("value: |") + .doesNotContain("value: [ {") + } + @Test fun ramlRenderToRamlDoc() { val generatorConfig = CodeGeneratorConfig( diff --git a/languages/ramldoc/src/test/resources/arrayexample.raml b/languages/ramldoc/src/test/resources/arrayexample.raml new file mode 100644 index 00000000..07eb96c0 --- /dev/null +++ b/languages/ramldoc/src/test/resources/arrayexample.raml @@ -0,0 +1,22 @@ +#%RAML 1.0 +--- +title: Array Example Test API +version: 1.0 +baseUri: http://example.com/api +/items: + get: + displayName: QueryItems + securedBy: [] + responses: + 200: + body: + application/json: + type: array + items: + type: object + examples: + default: + strict: true + value: + - name: "first" + - name: "second"