diff --git a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/main.js b/src/core/plugins/json-schema-2020-12/samples-extensions/fn/main.js index 983d6253434..ee57f223ebd 100644 --- a/src/core/plugins/json-schema-2020-12/samples-extensions/fn/main.js +++ b/src/core/plugins/json-schema-2020-12/samples-extensions/fn/main.js @@ -420,7 +420,7 @@ export const sampleFromSchemaGeneric = ( return res } - if (isBooleanJSONSchema(additionalProperties)) { + if (isBooleanJSONSchema(additionalProperties) && additionalProperties) { if (respectXML) { res[displayName].push({ additionalProp: "Anything can be here" }) } else { diff --git a/test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js b/test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js index 181173efe0f..936e3f9d0c4 100644 --- a/test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js +++ b/test/unit/core/plugins/json-schema-2020-12/samples-extensions/fn.js @@ -1189,6 +1189,67 @@ describe("sampleFromSchema", () => { expect(sampleFromSchema(definition)).toEqual(expected) }) + + it("should handle additionalProperties", () => { + const definition = { + type: "object", + additionalProperties: { + type: "string", + }, + properties: { + foo: { + type: "string", + }, + }, + } + + const expected = { + foo: "string", + additionalProp1: "string", + additionalProp2: "string", + additionalProp3: "string", + } + + expect(sampleFromSchema(definition)).toEqual(expected) + }) + + it("should handle additionalProperties=true", () => { + const definition = { + type: "object", + additionalProperties: true, + properties: { + foo: { + type: "string", + }, + }, + } + + const expected = { + foo: "string", + additionalProp1: {}, + } + + expect(sampleFromSchema(definition)).toEqual(expected) + }) + + it("should handle additionalProperties=false", () => { + const definition = { + type: "object", + additionalProperties: false, + properties: { + foo: { + type: "string", + }, + }, + } + + const expected = { + foo: "string", + } + + expect(sampleFromSchema(definition)).toEqual(expected) + }) + it("should ignore minProperties if cannot extend object", () => { const definition = { type: "object", @@ -2618,6 +2679,25 @@ describe("createXMLExample", function () { expect(sut(definition)).toEqual(expected) }) + it("returns object with additional props =false", function () { + let expected = + '<?xml version="1.0" encoding="UTF-8"?>\n<animals>\n\t<dog>string</dog>\n</animals>' + let definition = { + type: "object", + properties: { + dog: { + type: "string", + }, + }, + additionalProperties: false, + xml: { + name: "animals", + }, + } + + expect(sut(definition)).toEqual(expected) + }) + it("returns object with 2 properties with no type passed but properties", function () { const expected = '<?xml version="1.0" encoding="UTF-8"?>\n<aliens>\n\t<alien>string</alien>\n\t<dog>0</dog>\n</aliens>' diff --git a/test/unit/core/plugins/samples/fn/index.js b/test/unit/core/plugins/samples/fn/index.js index 11815f95fd8..d4de01d5542 100644 --- a/test/unit/core/plugins/samples/fn/index.js +++ b/test/unit/core/plugins/samples/fn/index.js @@ -914,6 +914,68 @@ describe("sampleFromSchema", () => { expect(sampleFromSchema(definition)).toEqual(expected) }) + + + it("should handle additionalProperties", () => { + const definition = { + type: "object", + additionalProperties: { + type: "string", + }, + properties: { + foo: { + type: "string", + }, + }, + } + + const expected = { + foo: "string", + additionalProp1: "string", + additionalProp2: "string", + additionalProp3: "string", + } + + expect(sampleFromSchema(definition)).toEqual(expected) + }) + + it("should handle additionalProperties=true", () => { + const definition = { + type: "object", + additionalProperties: true, + properties: { + foo: { + type: "string", + }, + }, + } + + const expected = { + foo: "string", + additionalProp1: {}, + } + + expect(sampleFromSchema(definition)).toEqual(expected) + }) + + it("should handle additionalProperties=false", () => { + const definition = { + type: "object", + additionalProperties: false, + properties: { + foo: { + type: "string", + }, + }, + } + + const expected = { + foo: "string", + } + + expect(sampleFromSchema(definition)).toEqual(expected) + }) + it("should ignore minProperties if cannot extend object", () => { const definition = { type: "object", @@ -2149,6 +2211,24 @@ describe("createXMLExample", function () { expect(sut(definition)).toEqual(expected) }) + it("returns object with additional props =false", function () { + let expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<animals>\n\t<dog>string</dog>\n</animals>" + let definition = { + type: "object", + properties: { + dog: { + type: "string" + } + }, + additionalProperties: false, + xml: { + name: "animals" + } + } + + expect(sut(definition)).toEqual(expected) + }) + it("returns object with 2 properties with no type passed but properties", function () { let expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<aliens>\n\t<alien>string</alien>\n\t<dog>0</dog>\n</aliens>" let definition = {