fix(sample-gen): should render additionalProperties in example (#6821)
* fix(sample-gen): should render additionalProperties in example * test(sample-gen): should return additional property from example for object and array schemas
This commit is contained in:
@@ -143,8 +143,7 @@ export const sampleFromSchemaGeneric = (schema, config={}, exampleOverride = und
|
|||||||
let addPropertyToResult
|
let addPropertyToResult
|
||||||
if(respectXML) {
|
if(respectXML) {
|
||||||
addPropertyToResult = (propName, overrideE = undefined) => {
|
addPropertyToResult = (propName, overrideE = undefined) => {
|
||||||
|
if(schema && props[propName]) {
|
||||||
if(schema) {
|
|
||||||
// case it is an xml attribute
|
// case it is an xml attribute
|
||||||
props[propName].xml = props[propName].xml || {}
|
props[propName].xml = props[propName].xml || {}
|
||||||
|
|
||||||
@@ -168,6 +167,13 @@ export const sampleFromSchemaGeneric = (schema, config={}, exampleOverride = und
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
props[propName].xml.name = props[propName].xml.name || propName
|
props[propName].xml.name = props[propName].xml.name || propName
|
||||||
|
} else if(!props[propName] && additionalProperties !== false) {
|
||||||
|
// case only additionalProperty that is not defined in schema
|
||||||
|
props[propName] = {
|
||||||
|
xml: {
|
||||||
|
name: propName
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let t = sampleFromSchemaGeneric(schema && props[propName] || undefined, config, overrideE, respectXML)
|
let t = sampleFromSchemaGeneric(schema && props[propName] || undefined, config, overrideE, respectXML)
|
||||||
|
|||||||
@@ -1093,7 +1093,28 @@ describe("createXMLExample", function () {
|
|||||||
|
|
||||||
expect(sut(definition)).toEqual(expected)
|
expect(sut(definition)).toEqual(expected)
|
||||||
})
|
})
|
||||||
|
it("should return additionalProperty example", () => {
|
||||||
|
let expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<aliens>\n\t<notalien>test</notalien>\n</aliens>"
|
||||||
|
let definition = {
|
||||||
|
type: "array",
|
||||||
|
items: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
alien: {
|
||||||
|
type: "string"
|
||||||
|
},
|
||||||
|
dog: {
|
||||||
|
type: "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xml: {
|
||||||
|
name: "aliens"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(sut(definition, {}, [{ notalien: "test" }])).toEqual(expected)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("object", function () {
|
describe("object", function () {
|
||||||
@@ -1521,6 +1542,26 @@ describe("createXMLExample", function () {
|
|||||||
|
|
||||||
expect(sut(definition, {}, overrideExample)).toEqual(expected)
|
expect(sut(definition, {}, overrideExample)).toEqual(expected)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should return additionalProperty example", () => {
|
||||||
|
let expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<aliens>\n\t<alien>test</alien>\n\t<dog>1</dog>\n</aliens>"
|
||||||
|
let definition = {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
alien: {
|
||||||
|
type: "string"
|
||||||
|
},
|
||||||
|
dog: {
|
||||||
|
type: "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xml: {
|
||||||
|
name: "aliens"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(sut(definition, {}, { alien: "test", dog: 1 })).toEqual(expected)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user