Skip to content

Commit 1313c39

Browse files
authored
Merge pull request #62 from ePages-de/empty-array-schema
GH-53 Empty array schema
2 parents e27ab05 + 4391742 commit 1313c39

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ subprojects {
104104
}
105105
}
106106
}
107-
107+
108108
apply(plugin = "com.jfrog.bintray")
109109
configure<BintrayExtension> {
110110
user = project.findProperty("bintrayUser") as String? ?: System.getenv("BINTRAY_USER")

restdocs-api-spec-jsonschema/src/main/kotlin/com/epages/restdocs/apispec/jsonschema/JsonSchemaFromFieldDescriptorsGenerator.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,14 @@ class JsonSchemaFromFieldDescriptorsGenerator {
229229
"null" -> NullSchema.builder()
230230
"empty" -> EmptySchema.builder()
231231
"object" -> ObjectSchema.builder()
232-
"array" -> ArraySchema.builder()
232+
"array" -> ArraySchema.builder().allItemSchema(CombinedSchema.oneOf(
233+
listOf(
234+
ObjectSchema.builder().build(),
235+
BooleanSchema.builder().build(),
236+
StringSchema.builder().build(),
237+
NumberSchema.builder().build()
238+
)
239+
).build())
233240
"boolean" -> BooleanSchema.builder()
234241
"number" -> NumberSchema.builder()
235242
"string" -> StringSchema.builder()

restdocs-api-spec-jsonschema/src/test/kotlin/com/epages/restdocs/apispec/jsonschema/JsonSchemaFromFieldDescriptorsGeneratorTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,17 @@ class JsonSchemaFromFieldDescriptorsGeneratorTest {
183183
then(JsonPath.read<String>(schemaString, "properties.id.description")).isNotEmpty()
184184
}
185185

186+
@Test
187+
fun should_generate_schema_for_unspecified_array_contents() {
188+
givenFieldDescriptorUnspecifiedArrayItems()
189+
190+
whenSchemaGenerated()
191+
192+
then(schema).isInstanceOf(ObjectSchema::class.java)
193+
thenSchemaIsValid()
194+
thenSchemaValidatesJson("""{ some: [ { "a": "b" } ] }""")
195+
}
196+
186197
private fun thenSchemaIsValid() {
187198

188199
val report = JsonSchemaFactory.byDefault()
@@ -213,6 +224,10 @@ class JsonSchemaFromFieldDescriptorsGeneratorTest {
213224
fieldDescriptors = listOf(FieldDescriptor("[][]", "some", "ARRAY"))
214225
}
215226

227+
private fun givenFieldDescriptorUnspecifiedArrayItems() {
228+
fieldDescriptors = listOf(FieldDescriptor("some[]", "some", "ARRAY"))
229+
}
230+
216231
private fun givenFieldDescriptorWithInvalidType() {
217232
fieldDescriptors = listOf(FieldDescriptor("id", "some", "invalid-type"))
218233
}

0 commit comments

Comments
 (0)