fix(json-schema-2020-12-samples): skip anyOf and oneOf while merging schemas (#9853)
Refs #9198
This commit is contained in:
@@ -320,10 +320,13 @@ export const sampleFromSchemaGeneric = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Array.isArray(contains.anyOf)) {
|
if (Array.isArray(contains.anyOf)) {
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
const { anyOf, ...containsWithoutAnyOf } = items
|
||||||
|
|
||||||
sampleArray.push(
|
sampleArray.push(
|
||||||
...contains.anyOf.map((anyOfSchema) =>
|
...contains.anyOf.map((anyOfSchema) =>
|
||||||
sampleFromSchemaGeneric(
|
sampleFromSchemaGeneric(
|
||||||
merge(anyOfSchema, contains, config),
|
merge(anyOfSchema, containsWithoutAnyOf, config),
|
||||||
config,
|
config,
|
||||||
undefined,
|
undefined,
|
||||||
respectXML
|
respectXML
|
||||||
@@ -331,10 +334,13 @@ export const sampleFromSchemaGeneric = (
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
} else if (Array.isArray(contains.oneOf)) {
|
} else if (Array.isArray(contains.oneOf)) {
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
const { oneOf, ...containsWithoutOneOf } = items
|
||||||
|
|
||||||
sampleArray.push(
|
sampleArray.push(
|
||||||
...contains.oneOf.map((oneOfSchema) =>
|
...contains.oneOf.map((oneOfSchema) =>
|
||||||
sampleFromSchemaGeneric(
|
sampleFromSchemaGeneric(
|
||||||
merge(oneOfSchema, contains, config),
|
merge(oneOfSchema, containsWithoutOneOf, config),
|
||||||
config,
|
config,
|
||||||
undefined,
|
undefined,
|
||||||
respectXML
|
respectXML
|
||||||
@@ -357,10 +363,13 @@ export const sampleFromSchemaGeneric = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Array.isArray(items.anyOf)) {
|
if (Array.isArray(items.anyOf)) {
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
const { anyOf, ...itemsWithoutAnyOf } = items
|
||||||
|
|
||||||
sampleArray.push(
|
sampleArray.push(
|
||||||
...items.anyOf.map((i) =>
|
...items.anyOf.map((i) =>
|
||||||
sampleFromSchemaGeneric(
|
sampleFromSchemaGeneric(
|
||||||
merge(i, items, config),
|
merge(i, itemsWithoutAnyOf, config),
|
||||||
config,
|
config,
|
||||||
undefined,
|
undefined,
|
||||||
respectXML
|
respectXML
|
||||||
@@ -368,10 +377,13 @@ export const sampleFromSchemaGeneric = (
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
} else if (Array.isArray(items.oneOf)) {
|
} else if (Array.isArray(items.oneOf)) {
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
const { oneOf, ...itemsWithoutOneOf } = items
|
||||||
|
|
||||||
sampleArray.push(
|
sampleArray.push(
|
||||||
...items.oneOf.map((i) =>
|
...items.oneOf.map((i) =>
|
||||||
sampleFromSchemaGeneric(
|
sampleFromSchemaGeneric(
|
||||||
merge(i, items, config),
|
merge(i, itemsWithoutOneOf, config),
|
||||||
config,
|
config,
|
||||||
undefined,
|
undefined,
|
||||||
respectXML
|
respectXML
|
||||||
|
|||||||
@@ -810,6 +810,36 @@ describe("sampleFromSchema", () => {
|
|||||||
expect(sampleFromSchema(definition)).toEqual(expected)
|
expect(sampleFromSchema(definition)).toEqual(expected)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("returns array of samples for oneOf with objects", function () {
|
||||||
|
const definition = {
|
||||||
|
type: "array",
|
||||||
|
items: {
|
||||||
|
oneOf: [
|
||||||
|
{
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
name: {
|
||||||
|
type: "string",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: "string",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const expected = [{ name: "string" }, { id: "string" }]
|
||||||
|
|
||||||
|
expect(sampleFromSchema(definition)).toStrictEqual(expected)
|
||||||
|
})
|
||||||
|
|
||||||
it("returns array of samples for anyOf type", () => {
|
it("returns array of samples for anyOf type", () => {
|
||||||
const definition = {
|
const definition = {
|
||||||
type: "array",
|
type: "array",
|
||||||
|
|||||||
Reference in New Issue
Block a user